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...> - 2010-12-23 11:13:52
|
Revision: 3442 http://jcl.svn.sourceforge.net/jcl/?rev=3442&view=rev Author: outchy Date: 2010-12-23 11:13:46 +0000 (Thu, 23 Dec 2010) Log Message: ----------- The first and last lines of expanded macros are not stripped when poKeepTabAndSpaces is set in State.Options. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppParser.pas Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-12-23 11:11:13 UTC (rev 3441) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-12-23 11:13:46 UTC (rev 3442) @@ -391,22 +391,25 @@ Lines := TStringList.Create; try StrToStrings(AResult, NativeLineBreak, Lines); - // remove first empty lines - while Lines.Count > 0 do + if not (poKeepTabAndSpaces in State.Options) then begin - if Lines.Strings[0] = '' then - Lines.Delete(0) - else - Break; + // remove first empty lines + while Lines.Count > 0 do + begin + if Lines.Strings[0] = '' then + Lines.Delete(0) + else + Break; + end; + // remove last empty lines + for I := Lines.Count - 1 downto 0 do + begin + if Lines.Strings[I] = '' then + Lines.Delete(I) + else + Break; + end; end; - // remove last empty lines - for I := Lines.Count - 1 downto 0 do - begin - if Lines.Strings[I] = '' then - Lines.Delete(I) - else - Break; - end; // fix line offsets if LinePrefix <> '' then for I := 1 to Lines.Count - 1 do This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-23 11:11:20
|
Revision: 3441 http://jcl.svn.sourceforge.net/jcl/?rev=3441&view=rev Author: outchy Date: 2010-12-23 11:11:13 +0000 (Thu, 23 Dec 2010) Log Message: ----------- properties Lexer and State are now public. speed optimization: macros and values are not processed when stripped. style cleaning. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppParser.pas Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-12-14 19:59:11 UTC (rev 3440) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-12-23 11:11:13 UTC (rev 3441) @@ -89,13 +89,13 @@ procedure ParseSetBoolValue; procedure ParseSetIntValue; procedure ParseSetStrValue; - - property Lexer: TJppLexer read FLexer; - property State: TPppState read FState; public constructor Create(const ABuffer: string; APppState: TPppState); destructor Destroy; override; function Parse: string; + + property Lexer: TJppLexer read FLexer; + property State: TPppState read FState; end; {$IFDEF UNITVERSIONING} @@ -895,11 +895,11 @@ while True do case Lexer.CurrTok of ptComment: - begin - if not (poStripComments in State.Options) then - AddResult(Lexer.TokenAsString); - NextToken; - end; + begin + if not (poStripComments in State.Options) then + AddResult(Lexer.TokenAsString); + NextToken; + end; ptEof: begin @@ -957,6 +957,9 @@ AddRawComment; ptJppDefineMacro, ptJppExpandMacro, ptJppUndefMacro: + if State.TriState = ttUndef then + NextToken + else if poProcessMacros in State.Options then case Lexer.CurrTok of ptJppDefineMacro: @@ -976,6 +979,9 @@ ptJppSetIntValue, ptJppSetBoolValue, ptJppLoop: + if State.TriState = ttUndef then + NextToken + else if poProcessValues in State.Options then case Lexer.CurrTok of ptJppGetStrValue: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-14 19:59:18
|
Revision: 3440 http://jcl.svn.sourceforge.net/jcl/?rev=3440&view=rev Author: outchy Date: 2010-12-14 19:59:11 +0000 (Tue, 14 Dec 2010) Log Message: ----------- Fix crash in the JVCL installer. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2010-12-14 17:21:58 UTC (rev 3439) +++ trunk/jcl/source/common/JclSimpleXml.pas 2010-12-14 19:59:11 UTC (rev 3440) @@ -414,7 +414,7 @@ TJclSimpleXMLOptions = set of (sxoAutoCreate, sxoAutoIndent, sxoAutoEncodeValue, sxoAutoEncodeEntity, sxoDoNotSaveProlog, sxoTrimPrecedingTextWhitespace, - sxoTrimFollowingTextWhitespace); + sxoTrimFollowingTextWhitespace, sxoKeepWhitespace); TJclSimpleXMLEncodeEvent = procedure(Sender: TObject; var Value: string) of object; TJclSimpleXMLEncodeStreamEvent = procedure(Sender: TObject; InStream, OutStream: TStream) of object; @@ -2002,7 +2002,7 @@ begin St := ''; lPos := rsWaitingTag; - KeepWhiteSpace := (AParent.Options * [sxoTrimPrecedingTextWhitespace, sxoTrimFollowingTextWhitespace]) = []; + KeepWhiteSpace := sxoKeepWhitespace in AParent.Options; ContainsText := False; ContainsWhiteSpace := False; @@ -3021,7 +3021,7 @@ procedure TJclSimpleXMLElemText.LoadFromStringStream(StringStream: TJclStringStream; AParent: TJclSimpleXML); var Ch: Char; - St: string; + St, TrimValue: string; begin St := ''; @@ -3044,10 +3044,13 @@ begin GetSimpleXML.DoDecodeValue(St); + TrimValue := St; if sxoTrimPrecedingTextWhitespace in SimpleXML.Options then - St := TrimLeft(St); + TrimValue := TrimLeft(TrimValue); if sxoTrimFollowingTextWhitespace in SimpleXML.Options then - St := TrimRight(St); + TrimValue := TrimRight(TrimValue); + if (TrimValue <> '') or not (sxoKeepWhitespace in SimpleXML.Options) then + St := TrimValue; end; Value := St; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-14 17:22:04
|
Revision: 3439 http://jcl.svn.sourceforge.net/jcl/?rev=3439&view=rev Author: outchy Date: 2010-12-14 17:21:58 +0000 (Tue, 14 Dec 2010) Log Message: ----------- $JPPUNDEF, $UNDEF, $JPPDEFINE and $DEFINE should be parsed in recursive mode and not in the pushed state. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppParser.pas Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-12-14 16:49:20 UTC (rev 3438) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-12-14 17:21:58 UTC (rev 3439) @@ -309,13 +309,14 @@ ptEof: Break; ptDefine, - ptJppDefine: - if poProcessDefines in State.Options then - State.Define(TempLexer.TokenAsString); + ptJppDefine, ptUndef, ptJppUndef: if poProcessDefines in State.Options then - State.Undef(TempLexer.TokenAsString); + begin + Recurse := True; + Break; + end; ptIfdef, ptIfndef: if (poProcessDefines in State.Options) and (State.Defines[TempLexer.TokenAsString] in [ttDefined, ttUndef]) then begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-14 16:49:27
|
Revision: 3438 http://jcl.svn.sourceforge.net/jcl/?rev=3438&view=rev Author: outchy Date: 2010-12-14 16:49:20 +0000 (Tue, 14 Dec 2010) Log Message: ----------- support for keeping white spaces. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppParser.pas trunk/jcl/devtools/jpp/JppState.pas trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-12-14 12:11:49 UTC (rev 3437) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-12-14 16:49:20 UTC (rev 3438) @@ -132,14 +132,22 @@ PLineBreak = PChar; {$ENDIF UNIX} -function AllWhiteSpace(P: PChar): Boolean; +function AllWhiteSpace(P: PChar; KeepTabAndSpaces: Boolean): Boolean; var I: Integer; begin Result := True; for I := 1 to Length(P) do case P^ of - NativeTab, NativeLineFeed, NativeCarriageReturn, NativeSpace: + NativeTab, NativeSpace: + if KeepTabAndSpaces then + begin + Result := False; + Break; + end + else + Inc(P); + NativeLineFeed, NativeCarriageReturn: Inc(P); else Result := False; @@ -416,7 +424,7 @@ while FResultLen + Length(AResult) > Length(FResult) do SetLength(FResult, Length(FResult) * 2); Move(AResult[1], FResult[FResultLen + 1], Length(AResult) * SizeOf(Char)); - FAllWhiteSpaceOut := FAllWhiteSpaceOut and AllWhiteSpace(PChar(AResult)); + FAllWhiteSpaceOut := FAllWhiteSpaceOut and AllWhiteSpace(PChar(AResult), poKeepTabAndSpaces in State.Options); Inc(FResultLen, Length(AResult)); end; end; @@ -440,7 +448,7 @@ ptComment: FAllWhiteSpaceIn := False; ptText: - FAllWhiteSpaceIn := FAllWhiteSpaceIn and AllWhiteSpace(PChar(Lexer.TokenAsString)); + FAllWhiteSpaceIn := FAllWhiteSpaceIn and AllWhiteSpace(PChar(Lexer.TokenAsString), poKeepTabAndSpaces in State.Options); ptDefine, ptUndef, ptIfdef, Modified: trunk/jcl/devtools/jpp/JppState.pas =================================================================== --- trunk/jcl/devtools/jpp/JppState.pas 2010-12-14 12:11:49 UTC (rev 3437) +++ trunk/jcl/devtools/jpp/JppState.pas 2010-12-14 16:49:20 UTC (rev 3438) @@ -58,7 +58,7 @@ EPppState = class(EJclError); TPppOption = (poProcessIncludes, poProcessDefines, poStripComments, - poProcessMacros, poProcessValues, poNoWarningHeader); + poProcessMacros, poProcessValues, poNoWarningHeader, poKeepTabAndSpaces); TPppOptions = set of TPppOption; TTriState = (ttUnknown, ttUndef, ttDefined); Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2010-12-14 12:11:49 UTC (rev 3437) +++ trunk/jcl/source/common/JclSimpleXml.pas 2010-12-14 16:49:20 UTC (rev 3438) @@ -1998,11 +1998,13 @@ St: string; lElem: TJclSimpleXMLElem; Ch: Char; - lContainsText: Boolean; + ContainsText, ContainsWhiteSpace, KeepWhiteSpace: Boolean; begin St := ''; lPos := rsWaitingTag; - lContainsText := False; + KeepWhiteSpace := (AParent.Options * [sxoTrimPrecedingTextWhitespace, sxoTrimFollowingTextWhitespace]) = []; + ContainsText := False; + ContainsWhiteSpace := False; // We read from a stream, thus replacing the existing items Clear; @@ -2021,8 +2023,10 @@ St := Ch; end else - if not CharIsWhiteSpace(Ch) then - lContainsText := True; + if CharIsWhiteSpace(Ch) then + ContainsWhiteSpace := True + else + ContainsText := True; end; rsReadingTagKind: //We are trying to determine the kind of the tag @@ -2039,7 +2043,7 @@ // in the list. If we did not check this, we would create a // text element for whitespace found between two adjacent end // tags. - if lContainsText then + if ContainsText or (ContainsWhiteSpace and KeepWhiteSpace) then begin lElem := TJclSimpleXMLElemText.Create(Parent); lElem.LoadFromStringStream(StringStream, AParent); @@ -2063,12 +2067,13 @@ lPos := rsWaitingTag; end; else - if lContainsText then + if ContainsText or (ContainsWhiteSpace and KeepWhiteSpace) then begin // inner text lElem := TJclSimpleXMLElemText.Create(Parent); lPos := rsReadingTagKind; - lContainsText := False; + ContainsText := False; + ContainsWhiteSpace := False; end else begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-14 12:11:59
|
Revision: 3437 http://jcl.svn.sourceforge.net/jcl/?rev=3437&view=rev Author: outchy Date: 2010-12-14 12:11:49 +0000 (Tue, 14 Dec 2010) Log Message: ----------- Better handling of preprocessor orphaned lines. Some optimizations in TJppParser.AddResult when nothing is added. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppParser.pas trunk/jcl/source/common/JclAlgorithms.pas trunk/jcl/source/common/JclArrayLists.pas trunk/jcl/source/common/JclArraySets.pas trunk/jcl/source/common/JclBinaryTrees.pas trunk/jcl/source/common/JclContainerIntf.pas trunk/jcl/source/common/JclHashMaps.pas trunk/jcl/source/common/JclLinkedLists.pas trunk/jcl/source/common/JclQueues.pas trunk/jcl/source/common/JclSortedMaps.pas trunk/jcl/source/common/JclStacks.pas trunk/jcl/source/common/JclTrees.pas trunk/jcl/source/common/JclVectors.pas trunk/jcl/source/prototypes/JclAlgorithms.pas trunk/jcl/source/prototypes/JclArrayLists.pas trunk/jcl/source/prototypes/JclArraySets.pas trunk/jcl/source/prototypes/JclBinaryTrees.pas trunk/jcl/source/prototypes/JclContainerIntf.pas trunk/jcl/source/prototypes/JclHashMaps.pas trunk/jcl/source/prototypes/JclHashSets.pas trunk/jcl/source/prototypes/JclLinkedLists.pas trunk/jcl/source/prototypes/JclQueues.pas trunk/jcl/source/prototypes/JclSortedMaps.pas trunk/jcl/source/prototypes/JclStacks.pas trunk/jcl/source/prototypes/JclTrees.pas trunk/jcl/source/prototypes/JclVectors.pas trunk/jcl/source/prototypes/containers/JclAlgorithms.imp trunk/jcl/source/prototypes/containers/JclContainerIntf.int trunk/jcl/source/vcl/JclGraphUtils.pas trunk/jcl/source/vcl/JclGraphics.pas trunk/jcl/source/windows/Hardlinks.pas trunk/jcl/source/windows/JclWin32.pas Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -65,7 +65,6 @@ FLineBreakPos: Integer; FAllWhiteSpaceIn: Boolean; FAllWhiteSpaceOut: Boolean; - procedure RemoveOrphanedLineBreaks; protected procedure AddResult(const S: string; FixIndent: Boolean = False; ForceRecurseTest: Boolean = False); function IsExcludedInclude(const FileName: string): Boolean; @@ -140,7 +139,7 @@ Result := True; for I := 1 to Length(P) do case P^ of - #9, #10, #13, ' ': + NativeTab, NativeLineFeed, NativeCarriageReturn, NativeSpace: Inc(P); else Result := False; @@ -259,6 +258,7 @@ constructor TJppParser.Create(const ABuffer: string; APppState: TPppState); begin + inherited Create; Assert(APppState <> nil); FLexer := TJppLexer.Create(ABuffer); @@ -288,7 +288,7 @@ AResult := S; // recurse macro expanding - if ForceRecurseTest or (StrIPos('$JPP', AResult) > 0) then + if (AResult <> '') and (ForceRecurseTest or (StrIPos('$JPP', AResult) > 0)) then begin try Recurse := False; @@ -368,7 +368,7 @@ AResult := S; end; end; - if FixIndent then + if FixIndent and (AResult <> '') then begin // find the number of white space at the beginning of the current line (indentation level) I := FResultLen + 1; @@ -411,12 +411,14 @@ Lines.Free; end; end; - while FResultLen + Length(AResult) > Length(FResult) do - SetLength(FResult, Length(FResult) * 2); - Move(AResult[1], FResult[FResultLen + 1], Length(AResult) * SizeOf(Char)); - if FAllWhiteSpaceOut then - FAllWhiteSpaceOut := AllWhiteSpace(@FResult[FLineBreakPos]); - Inc(FResultLen, Length(AResult)); + if AResult <> '' then + begin + while FResultLen + Length(AResult) > Length(FResult) do + SetLength(FResult, Length(FResult) * 2); + Move(AResult[1], FResult[FResultLen + 1], Length(AResult) * SizeOf(Char)); + FAllWhiteSpaceOut := FAllWhiteSpaceOut and AllWhiteSpace(PChar(AResult)); + Inc(FResultLen, Length(AResult)); + end; end; function TJppParser.IsExcludedInclude(const FileName: string): Boolean; @@ -428,38 +430,17 @@ begin Lexer.NextTok; - if State.TriState in [ttUnknown, ttDefined] then - RemoveOrphanedLineBreaks; -end; - -procedure TJppParser.RemoveOrphanedLineBreaks; - - procedure DeleteCurrentLineIfOrphaned; - begin - if not FAllWhiteSpaceIn and FAllWhiteSpaceOut then - if FLineBreakPos <= FResultLen then - begin - FResultLen := FLineBreakPos - 1; - FResult[FResultLen + 1] := #0; - end; - end; - -begin + if State.TriState = ttUndef then + Exit; + case Lexer.CurrTok of - ptEof: - DeleteCurrentLineIfOrphaned; + ptEof, ptEol: + // do not change FAllWhiteSpaceIn + ; ptComment: FAllWhiteSpaceIn := False; ptText: - if FAllWhiteSpaceIn then - FAllWhiteSpaceIn := AllWhiteSpace(PChar(Lexer.TokenAsString)); - ptEol: - begin - DeleteCurrentLineIfOrphaned; - FLineBreakPos := FResultLen + 1; - FAllWhiteSpaceIn := True; - FAllWhiteSpaceOut := True; - end; + FAllWhiteSpaceIn := FAllWhiteSpaceIn and AllWhiteSpace(PChar(Lexer.TokenAsString)); ptDefine, ptUndef, ptIfdef, @@ -490,9 +471,11 @@ function TJppParser.Parse: string; begin FLexer.Reset; - FResult := ''; + SetLength(FResult, 64 * 1024); + FillChar(FResult[1], Length(FResult) * SizeOf(Char), 0); FResultLen := 0; - SetLength(FResult, 64 * 1024); + FLineBreakPos := 1; + FAllWhiteSpaceOut := True; ParseText; SetLength(FResult, FResultLen); @@ -500,6 +483,22 @@ end; procedure TJppParser.ParseCondition(Token: TJppToken); + procedure PushAndExecute(NewTriState: TTriState); + var + NeedPush: Boolean; + begin + NeedPush := State.TriState <> NewTriState; + if NeedPush then + State.PushState; + try + State.TriState := NewTriState; + NextToken; + ParseText; + finally + if NeedPush then + State.PopState; + end; + end; var Condition: string; ConditionTriState: TTriState; @@ -507,11 +506,11 @@ Condition := Lexer.TokenAsString; ConditionTriState := State.Defines[Condition]; // parse the first part of the $IFDEF or $IFNDEF - State.PushState; - try - case ConditionTriState of - ttUnknown: - begin + case ConditionTriState of + ttUnknown: + begin + State.PushState; + try // preserve the $IFDEF or $IFNDEF AddResult(Lexer.RawComment); // assume that the symbol is defined in the $IFDEF @@ -521,33 +520,33 @@ // assume that the symbol is not defined in the $IFNDEF if Token = ptIfndef then State.Undef(Condition); + NextToken; + ParseText; + finally + State.PopState; end; - ttUndef: - if Token = ptIfdef then - State.TriState := ttUndef - else - if Token = ptIfndef then - State.TriState := ttDefined; - ttDefined: - if Token = ptIfdef then - State.TriState := ttDefined - else - if Token = ptIfndef then - State.TriState := ttUndef; - end; - NextToken; - ParseText; - finally - State.PopState; + end; + ttUndef: + if Token = ptIfdef then + PushAndExecute(ttUndef) + else + if Token = ptIfndef then + PushAndExecute(ttDefined); + ttDefined: + if Token = ptIfdef then + PushAndExecute(ttDefined) + else + if Token = ptIfndef then + PushAndExecute(ttUndef); end; // part the second part of the $IFDEF or $IFNDEF if any if Lexer.CurrTok = ptElse then begin - State.PushState; - try - case ConditionTriState of - ttUnknown: - begin + case ConditionTriState of + ttUnknown: + begin + State.PushState; + try // preserve the $ELSE AddResult(Lexer.RawComment); // assume that the symbol is not defined after the $IFDEF @@ -557,31 +556,31 @@ // assume that the symbol is defined after the $IFNDEF if Token = ptIfndef then State.Define(Condition); + NextToken; + ParseText; + finally + State.PopState; end; - ttUndef: - begin - if Token = ptIfdef then - State.TriState := ttDefined - else - if Token = ptIfndef then - State.TriState := ttUndef; - State.Defines[Condition] := ttDefined; - end; - ttDefined: - begin - if Token = ptIfdef then - State.TriState := ttUndef - else - if Token = ptIfndef then - State.TriState := ttDefined; - State.Defines[Condition] := ttUndef; - end; + end; + ttUndef: + begin + if Token = ptIfdef then + PushAndExecute(ttDefined) + else + if Token = ptIfndef then + PushAndExecute(ttUndef); + //State.Defines[Condition] := ttDefined; + end; + ttDefined: + begin + if Token = ptIfdef then + PushAndExecute(ttUndef) + else + if Token = ptIfndef then + PushAndExecute(ttDefined); + //State.Defines[Condition] := ttUndef; + end; end; - NextToken; - ParseText; - finally - State.PopState; - end; end; if Lexer.CurrTok <> ptEndif then Lexer.Error('$ENDIF expected'); @@ -873,6 +872,16 @@ NextToken; end; + procedure DeleteCurrentLineIfOrphaned; + begin + if not FAllWhiteSpaceIn and FAllWhiteSpaceOut then + if FLineBreakPos <= FResultLen then + begin + FResultLen := FLineBreakPos - 1; + FResult[FResultLen + 1] := #0; + end; + end; + begin while True do case Lexer.CurrTok of @@ -883,7 +892,23 @@ NextToken; end; - ptText, ptEol: + ptEof: + begin + DeleteCurrentLineIfOrphaned; + Break; + end; + + ptEol: + begin + AddResult(Lexer.TokenAsString); + DeleteCurrentLineIfOrphaned; + FLineBreakPos := FResultLen + 1; + FAllWhiteSpaceIn := True; + FAllWhiteSpaceOut := True; + NextToken; + end; + + ptText: begin AddResult(Lexer.TokenAsString); NextToken; Modified: trunk/jcl/source/common/JclAlgorithms.pas =================================================================== --- trunk/jcl/source/common/JclAlgorithms.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclAlgorithms.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -48,7 +48,6 @@ JclBase, JclContainerIntf; // Compare functions - function IntfSimpleCompare(const Obj1, Obj2: IInterface): Integer; function AnsiStrSimpleCompare(const Obj1, Obj2: AnsiString): Integer; function WideStrSimpleCompare(const Obj1, Obj2: WideString): Integer; @@ -75,7 +74,6 @@ {$ENDIF SUPPORTS_UNICODE_STRING} // Compare functions for equality - function IntfSimpleEqualityCompare(const Obj1, Obj2: IInterface): Boolean; function AnsiStrSimpleEqualityCompare(const Obj1, Obj2: AnsiString): Boolean; function WideStrSimpleEqualityCompare(const Obj1, Obj2: WideString): Boolean; @@ -100,7 +98,6 @@ {$ENDIF SUPPORTS_UNICODE_STRING} // Hash conversion functions - function IntfSimpleHashConvert(const AInterface: IInterface): Integer; function AnsiStrSimpleHashConvert(const AString: AnsiString): Integer; function WideStrSimpleHashConvert(const AString: WideString): Integer; @@ -127,7 +124,6 @@ {$ENDIF SUPPORTS_UNICODE_STRING} // move array algorithms - procedure MoveArray(var List: TDynIInterfaceArray; FromIndex, ToIndex, Count: SizeInt); overload; procedure MoveArray(var List: TDynAnsiStringArray; FromIndex, ToIndex, Count: SizeInt); overload; procedure MoveArray(var List: TDynWideStringArray; FromIndex, ToIndex, Count: SizeInt); overload; @@ -150,7 +146,6 @@ {$ENDIF ~FPC} // Iterate algorithms - procedure Iterate(const First: IJclIntfIterator; Count: Integer; F: TIntfIterateProcedure); overload; procedure Iterate(const First: IJclAnsiStrIterator; Count: Integer; F: TAnsiStrIterateProcedure); overload; procedure Iterate(const First: IJclWideStrIterator; Count: Integer; F: TWideStrIterateProcedure); overload; @@ -166,8 +161,8 @@ procedure Iterate(const First: IJclPtrIterator; Count: Integer; F: TPtrIterateProcedure); overload; procedure Iterate(const First: IJclIterator; Count: Integer; F: TIterateProcedure); overload; -// Apply algorithms +// Apply algorithms procedure Apply(const First: IJclIntfIterator; Count: Integer; F: TIntfApplyFunction); overload; procedure Apply(const First: IJclAnsiStrIterator; Count: Integer; F: TAnsiStrApplyFunction); overload; procedure Apply(const First: IJclWideStrIterator; Count: Integer; F: TWideStrApplyFunction); overload; @@ -183,8 +178,8 @@ procedure Apply(const First: IJclPtrIterator; Count: Integer; F: TPtrApplyFunction); overload; procedure Apply(const First: IJclIterator; Count: Integer; F: TApplyFunction); overload; -// Find algorithms +// Find algorithms function Find(const First: IJclIntfIterator; Count: Integer; const AInterface: IInterface; AComparator: TIntfCompare): IJclIntfIterator; overload; function Find(const First: IJclIntfIterator; Count: Integer; const AInterface: IInterface; @@ -238,8 +233,8 @@ function Find(const First: IJclIterator; Count: Integer; AObject: TObject; AEqualityComparator: TEqualityCompare): IJclIterator; overload; -// CountObject algorithms +// CountObject algorithms function CountObject(const First: IJclIntfIterator; Count: Integer; const AInterface: IInterface; AComparator: TIntfCompare): Integer; overload; function CountObject(const First: IJclIntfIterator; Count: Integer; @@ -293,8 +288,8 @@ function CountObject(const First: IJclIterator; Count: Integer; AObject: TObject; AEqualityComparator: TEqualityCompare): Integer; overload; -// Copy algorithms +// Copy algorithms procedure Copy(const First: IJclIntfIterator; Count: Integer; const Output: IJclIntfIterator); overload; procedure Copy(const First: IJclAnsiStrIterator; Count: Integer; @@ -322,8 +317,8 @@ procedure Copy(const First: IJclIterator; Count: Integer; const Output: IJclIterator); overload; -// Generate algorithms +// Generate algorithms procedure Generate(const List: IJclIntfList; Count: Integer; const AInterface: IInterface); overload; procedure Generate(const List: IJclAnsiStrList; Count: Integer; const AString: AnsiString); overload; procedure Generate(const List: IJclWideStrList; Count: Integer; const AString: WideString); overload; @@ -339,8 +334,8 @@ procedure Generate(const List: IJclPtrList; Count: Integer; APtr: Pointer); overload; procedure Generate(const List: IJclList; Count: Integer; AObject: TObject); overload; -// Fill algorithms +// Fill algorithms procedure Fill(const First: IJclIntfIterator; Count: Integer; const AInterface: IInterface); overload; procedure Fill(const First: IJclAnsiStrIterator; Count: Integer; const AString: AnsiString); overload; procedure Fill(const First: IJclWideStrIterator; Count: Integer; const AString: WideString); overload; @@ -356,8 +351,8 @@ procedure Fill(const First: IJclPtrIterator; Count: Integer; APtr: Pointer); overload; procedure Fill(const First: IJclIterator; Count: Integer; AObject: TObject); overload; -// Reverse algorithms +// Reverse algorithms procedure Reverse(const First, Last: IJclIntfIterator); overload; procedure Reverse(const First, Last: IJclAnsiStrIterator); overload; procedure Reverse(const First, Last: IJclWideStrIterator); overload; @@ -389,6 +384,7 @@ procedure QuickSort(const AList: IJclPtrList; L, R: Integer; AComparator: TPtrCompare); overload; procedure QuickSort(const AList: IJclList; L, R: Integer; AComparator: TCompare); overload; + var IntfSortProc: TIntfSortProc = QuickSort; AnsiStrSortProc: TAnsiStrSortProc = QuickSort; @@ -406,7 +402,6 @@ SortProc: TSortProc = QuickSort; // Sort algorithms - procedure Sort(const AList: IJclIntfList; First, Last: Integer; AComparator: TIntfCompare); overload; procedure Sort(const AList: IJclAnsiStrList; First, Last: Integer; AComparator: TAnsiStrCompare); overload; procedure Sort(const AList: IJclWideStrList; First, Last: Integer; AComparator: TWideStrCompare); overload; @@ -422,6 +417,7 @@ procedure Sort(const AList: IJclPtrList; First, Last: Integer; AComparator: TPtrCompare); overload; procedure Sort(const AList: IJclList; First, Last: Integer; AComparator: TCompare); overload; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -1062,7 +1058,6 @@ Result := Integer(AObject) and MaxInt; end; - procedure FinalizeArrayBeforeMove(var List: TDynIInterfaceArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -1248,7 +1243,6 @@ end; end; - procedure MoveArray(var List: TDynWideStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then @@ -1256,12 +1250,10 @@ FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); - end; end; {$IFDEF SUPPORTS_UNICODE_STRING} - procedure FinalizeArrayBeforeMove(var List: TDynUnicodeStringArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -1317,7 +1309,6 @@ end; end; - procedure MoveArray(var List: TDynUnicodeStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then @@ -1349,12 +1340,10 @@ end; end; - procedure MoveArray(var List: TDynSingleArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1380,12 +1369,10 @@ end; end; - procedure MoveArray(var List: TDynDoubleArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1411,12 +1398,10 @@ end; end; - procedure MoveArray(var List: TDynExtendedArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1442,12 +1427,10 @@ end; end; - procedure MoveArray(var List: TDynIntegerArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1473,12 +1456,10 @@ end; end; - procedure MoveArray(var List: TDynCardinalArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1504,12 +1485,10 @@ end; end; - procedure MoveArray(var List: TDynInt64Array; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1535,12 +1514,10 @@ end; end; - procedure MoveArray(var List: TDynPointerArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1566,17 +1543,16 @@ end; end; - procedure MoveArray(var List: TDynObjectArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; + procedure InitializeArrayAfterMove(var List: TDynSizeIntArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -1597,12 +1573,10 @@ end; end; - procedure MoveArray(var List: TDynSizeIntArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; @@ -1632,9 +1606,8 @@ procedure InitializeArray(var List: TDynStringArray; FromIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin - + Initialize(List[FromIndex], Count); - end; procedure InitializeArrayAfterMove(var List: TDynStringArray; FromIndex, ToIndex, Count: SizeInt); overload; @@ -1657,7 +1630,6 @@ end; end; - procedure MoveArray(var List: TDynStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then @@ -1665,7 +1637,6 @@ FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); - end; end; @@ -1689,19 +1660,16 @@ end; end; - procedure MoveArray(var List: TDynFloatArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin - Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; {$ENDIF ~FPC} - procedure Iterate(const First: IJclIntfIterator; Count: Integer; F: TIntfIterateProcedure); var I: Integer; Modified: trunk/jcl/source/common/JclArrayLists.pas =================================================================== --- trunk/jcl/source/common/JclArrayLists.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclArrayLists.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -52,7 +52,6 @@ type TItrStart = (isFirst, isLast); - TJclIntfArrayList = class(TJclIntfAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} IJclIntfCloneable, IJclCloneable, IJclPackable, IJclGrowable, IJclContainer, IJclIntfEqualityComparer, IJclIntfCollection, IJclIntfList, IJclIntfArray) @@ -1069,6 +1068,7 @@ {$ENDIF SUPPORTS_FOR_IN} end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -1218,7 +1218,6 @@ uses SysUtils; - //=== { TJclIntfArrayList } ====================================================== constructor TJclIntfArrayList.Create(ACapacity: Integer); @@ -11088,6 +11087,7 @@ FOwnList.SetObject(FCursor, AObject); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclArraySets.pas =================================================================== --- trunk/jcl/source/common/JclArraySets.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclArraySets.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -52,7 +52,6 @@ JclBase, JclAbstractContainers, JclContainerIntf, JclArrayLists, JclSynch; type - TJclIntfArraySet = class(TJclIntfArrayList, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} IJclIntfCloneable, IJclCloneable, IJclPackable, IJclGrowable, IJclContainer, IJclIntfEqualityComparer, IJclIntfComparer, IJclIntfCollection, IJclIntfList, IJclIntfArray, IJclIntfSet) @@ -315,6 +314,7 @@ procedure Union(const ACollection: IJclCollection); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -399,7 +399,6 @@ uses SysUtils; - //=== { TJclIntfArraySet } ==================================================== function TJclIntfArraySet.Add(const AInterface: IInterface): Boolean; @@ -2107,6 +2106,7 @@ AssignPropertiesTo(Result); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclBinaryTrees.pas =================================================================== --- trunk/jcl/source/common/JclBinaryTrees.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclBinaryTrees.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -51,7 +51,6 @@ type TItrStart = (isFirst, isLast, isRoot); - TJclIntfBinaryNode = class public Value: IInterface; @@ -1720,6 +1719,7 @@ function GetPreviousCursor: TJclBinaryNode; override; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -1926,7 +1926,6 @@ uses SysUtils; - //=== { TJclIntfBinaryTree } ================================================= constructor TJclIntfBinaryTree.Create(ACompare: TIntfCompare); @@ -19777,6 +19776,7 @@ end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/common/JclContainerIntf.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclContainerIntf.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -40,7 +40,6 @@ unit JclContainerIntf; {$I jcl.inc} - interface uses @@ -69,7 +68,6 @@ // function pointer types // iterate functions Type -> (void) - TIntfIterateProcedure = procedure(const AInterface: IInterface); TAnsiStrIterateProcedure = procedure(const AString: AnsiString); TWideStrIterateProcedure = procedure(const AString: WideString); @@ -102,6 +100,7 @@ TInt64IterateProcedure = procedure(const AValue: Int64); TPtrIterateProcedure = procedure(APtr: Pointer); TIterateProcedure = procedure(AObject: TObject); + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN TIterateProcedure<T> = procedure(const AItem: T); @@ -109,7 +108,6 @@ {$ENDIF SUPPORTS_GENERICS} // apply functions Type -> Type - TIntfApplyFunction = function(const AInterface: IInterface): IInterface; TAnsiStrApplyFunction = function(const AString: AnsiString): AnsiString; TWideStrApplyFunction = function(const AString: WideString): WideString; @@ -142,6 +140,7 @@ TInt64ApplyFunction = function(const AValue: Int64): Int64; TPtrApplyFunction = function(APtr: Pointer): Pointer; TApplyFunction = function(AObject: TObject): TObject; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN TApplyFunction<T> = function(const AItem: T): T; @@ -149,7 +148,6 @@ {$ENDIF SUPPORTS_GENERICS} // comparison functions Type -> Type -> Integer - TIntfCompare = function(const Obj1, Obj2: IInterface): Integer; TAnsiStrCompare = function(const Obj1, Obj2: AnsiString): Integer; TWideStrCompare = function(const Obj1, Obj2: WideString): Integer; @@ -182,6 +180,7 @@ TInt64Compare = function(const Obj1, Obj2: Int64): Integer; TPtrCompare = function(Obj1, Obj2: Pointer): Integer; TCompare = function(Obj1, Obj2: TObject): Integer; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN TCompare<T> = function(const Obj1, Obj2: T): Integer; @@ -189,7 +188,6 @@ {$ENDIF SUPPORTS_GENERICS} // comparison for equality functions Type -> Type -> Boolean - TIntfEqualityCompare = function(const Obj1, Obj2: IInterface): Boolean; TAnsiStrEqualityCompare = function(const Obj1, Obj2: AnsiString): Boolean; TWideStrEqualityCompare = function(const Obj1, Obj2: WideString): Boolean; @@ -222,6 +220,7 @@ TInt64EqualityCompare = function(const Obj1, Obj2: Int64): Boolean; TPtrEqualityCompare = function(Obj1, Obj2: Pointer): Boolean; TEqualityCompare = function(Obj1, Obj2: TObject): Boolean; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN TEqualityCompare<T> = function(const Obj1, Obj2: T): Boolean; @@ -229,7 +228,6 @@ {$ENDIF SUPPORTS_GENERICS} // hash functions Type -> Integer - TIntfHashConvert = function(const AInterface: IInterface): Integer; TAnsiStrHashConvert = function(const AString: AnsiString): Integer; TWideStrHashConvert = function(const AString: WideString): Integer; @@ -262,6 +260,7 @@ TInt64HashConvert = function(const AValue: Int64): Integer; TPtrHashConvert = function(APtr: Pointer): Integer; THashConvert = function(AObject: TObject): Integer; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN THashConvert<T> = function(const AItem: T): Integer; @@ -406,7 +405,6 @@ IJclFloatContainer = IJclSingleContainer; {$ENDIF MATH_SINGLE_PRECISION} - IJclIntfEqualityComparer = interface ['{5CC2DF51-BE56-4D02-A171-31BAAC097632}'] function GetEqualityCompare: TIntfEqualityCompare; @@ -439,6 +437,7 @@ function ItemsEqual(const A, B: UnicodeString): Boolean; property EqualityCompare: TUnicodeStrEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; + {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} @@ -525,6 +524,7 @@ property EqualityCompare: TEqualityCompare read GetEqualityCompare write SetEqualityCompare; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclEqualityComparer<T> = interface @@ -537,7 +537,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfComparer = interface ['{EB41B843-184B-420D-B5DA-27D055B4CD55}'] function GetCompare: TIntfCompare; @@ -656,6 +655,7 @@ property Compare: TCompare read GetCompare write SetCompare; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclComparer<T> = interface @@ -668,7 +668,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfHashConverter = interface ['{7BAA0791-3B45-4D0F-9CD8-D13B81694786}'] function GetHashConvert: TIntfHashConvert; @@ -701,6 +700,7 @@ function Hash(const AString: UnicodeString): Integer; property HashConvert: TUnicodeStrHashConvert read GetHashConvert write SetHashConvert; end; + {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} @@ -787,6 +787,7 @@ property HashConvert: THashConvert read GetHashConvert write SetHashConvert; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclHashConverter<T> = interface @@ -854,7 +855,6 @@ property AutoGrowStrategy: TJclAutoGrowStrategy read GetAutoGrowStrategy write SetAutoGrowStrategy; end; - TFreeIntfEvent = function (var AInterface: IInterface): IInterface of object; IJclIntfOwner = interface(IInterface) @@ -898,6 +898,7 @@ procedure SetOnFreeString(Value: TFreeUnicodeStrEvent); property OnFreeString: TFreeUnicodeStrEvent read GetOnFreeString write SetOnFreeString; end; + {$ENDIF SUPPORTS_UNICODE_STRING} {$IFDEF CONTAINER_ANSISTR} @@ -1023,6 +1024,7 @@ end; + IJclKeyOwner = interface ['{8BE209E6-2F85-44FD-B0CD-A8363C95349A}'] function FreeKey(var Key: TObject): TObject; @@ -1065,7 +1067,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfIterator = interface(IJclAbstractIterator) ['{E121A98A-7C43-4587-806B-9189E8B2F106}'] function Add(const AInterface: IInterface): Boolean; @@ -1352,6 +1353,7 @@ {$ENDIF SUPPORTS_FOR_IN} end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclIterator<T> = interface(IJclAbstractIterator) @@ -1378,7 +1380,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfTreeIterator = interface(IJclIntfIterator) ['{C97379BF-C6A9-4A90-9D7A-152E9BAD314F}'] function AddChild(const AInterface: IInterface): Boolean; @@ -1617,6 +1618,7 @@ property Children[Index: Integer]: TObject read GetChild write SetChild; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclTreeIterator<T> = interface(IJclIterator<T>) @@ -1639,7 +1641,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfBinaryTreeIterator = interface(IJclIntfTreeIterator) ['{8BE874B2-0075-4EE0-8F49-665FC894D923}'] function HasLeft: Boolean; @@ -1758,6 +1759,7 @@ function Right: TObject; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclBinaryTreeIterator<T> = interface(IJclTreeIterator<T>) @@ -1770,7 +1772,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfCollection = interface(IJclContainer) ['{8E178463-4575-487A-B4D5-DC2AED3C7ACA}'] function Add(const AInterface: IInterface): Boolean; @@ -2057,6 +2058,7 @@ {$ENDIF SUPPORTS_FOR_IN} end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclCollection<T> = interface(IJclContainer) @@ -2083,7 +2085,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfList = interface(IJclIntfCollection) ['{E14EDA4B-1DAA-4013-9E6C-CDCB365C7CF9}'] function Delete(Index: Integer): IInterface; @@ -2274,6 +2275,7 @@ property Objects[Key: Integer]: TObject read GetObject write SetObject; default; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclList<T> = interface(IJclCollection<T>) @@ -2293,7 +2295,6 @@ {$ENDIF SUPPORTS_GENERICS} // Pointer functions for sort algorithms - TIntfSortProc = procedure(const AList: IJclIntfList; L, R: Integer; AComparator: TIntfCompare); TAnsiStrSortProc = procedure(const AList: IJclAnsiStrList; L, R: Integer; AComparator: TAnsiStrCompare); TWideStrSortProc = procedure(const AList: IJclWideStrList; L, R: Integer; AComparator: TWideStrCompare); @@ -2326,13 +2327,13 @@ TInt64SortProc = procedure(const AList: IJclInt64List; L, R: Integer; AComparator: TInt64Compare); TPtrSortProc = procedure(const AList: IJclPtrList; L, R: Integer; AComparator: TPtrCompare); TSortProc = procedure(const AList: IJclList; L, R: Integer; AComparator: TCompare); + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN TSortProc<T> = procedure(const AList: IJclList<T>; L, R: Integer; AComparator: TCompare<T>); //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfArray = interface(IJclIntfList) ['{B055B427-7817-43FC-97D4-AD1845643D63}'] function GetObject(Index: Integer): IInterface; @@ -2439,6 +2440,7 @@ property Objects[Index: Integer]: TObject read GetObject write SetObject; default; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclArray<T> = interface(IJclList<T>) @@ -2450,7 +2452,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfSet = interface(IJclIntfCollection) ['{E2D28852-9774-49B7-A739-5DBA2B705924}'] procedure Intersect(const ACollection: IJclIntfCollection); @@ -2557,6 +2558,7 @@ procedure Union(const ACollection: IJclCollection); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclSet<T> = interface(IJclCollection<T>) @@ -2570,7 +2572,6 @@ TJclTraverseOrder = (toPreOrder, toOrder, toPostOrder); - IJclIntfTree = interface(IJclIntfCollection) ['{5A21688F-113D-41B4-A17C-54BDB0BD6559}'] function GetRoot: IJclIntfTreeIterator; @@ -2701,6 +2702,7 @@ property TraverseOrder: TJclTraverseOrder read GetTraverseOrder write SetTraverseOrder; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclTree<T> = interface(IJclCollection<T>) @@ -2714,7 +2716,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfIntfMap = interface(IJclContainer) ['{01D05399-4A05-4F3E-92F4-0C236BE77019}'] procedure Clear; @@ -3664,6 +3665,7 @@ end; + (*IJclMultiIntfIntfMap = interface(IJclIntfIntfMap) ['{497775A5-D3F1-49FC-A641-15CC9E77F3D0}'] function GetValues(const Key: IInterface): IJclIntfIterator; @@ -3699,7 +3701,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfQueue = interface(IJclContainer) ['{B88756FE-5553-4106-957E-3E33120BFA99}'] procedure Clear; @@ -3854,6 +3855,7 @@ function Size: Integer; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclQueue<T> = interface(IJclContainer) @@ -3869,7 +3871,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfIntfSortedMap = interface(IJclIntfIntfMap) ['{265A6EB2-4BB3-459F-8813-360FD32A4971}'] function FirstKey: IInterface; @@ -4346,6 +4347,7 @@ end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclSortedMap<TKey,TValue> = interface(IJclMap<TKey,TValue>) @@ -4359,7 +4361,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfSortedSet = interface(IJclIntfSet) ['{159BE5A7-7349-42FF-BE55-9CA1B9DBA991}'] function HeadSet(const Finish: IInterface): IJclIntfSortedSet; @@ -4466,6 +4467,7 @@ function TailSet(Start: TObject): IJclSortedSet; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclSortedSet<T> = interface(IJclSet<T>) @@ -4477,7 +4479,6 @@ //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} - IJclIntfStack = interface(IJclContainer) ['{CA1DC7A1-8D8F-4A5D-81D1-0FE32E9A4E84}'] procedure Clear; @@ -4632,6 +4633,7 @@ function Size: Integer; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN IJclStack<T> = interface(IJclContainer) Modified: trunk/jcl/source/common/JclHashMaps.pas =================================================================== --- trunk/jcl/source/common/JclHashMaps.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclHashMaps.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -56,7 +56,6 @@ // Result must be in 0..Range-1 TJclHashFunction = function(Key, Range: Integer): Integer; - TJclIntfIntfHashEntry = record Key: IInterface; Value: IInterface; @@ -2537,6 +2536,7 @@ function Values: IJclCollection; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -2719,7 +2719,6 @@ Result := Trunc(Range * (Frac(Abs(Key * A)))); end; - //=== { TJclIntfIntfBucket } ========================================== procedure TJclIntfIntfBucket.MoveArray(FromIndex, ToIndex, Count: Integer); @@ -27831,6 +27830,7 @@ Result := SimpleEqualityCompare(A, B); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclLinkedLists.pas =================================================================== --- trunk/jcl/source/common/JclLinkedLists.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclLinkedLists.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -54,7 +54,6 @@ type TItrStart = (isFirst, isLast); - TJclIntfLinkedListItem = class public Value: IInterface; @@ -1129,6 +1128,7 @@ {$ENDIF SUPPORTS_FOR_IN} end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -1280,7 +1280,6 @@ uses SysUtils; - //=== { TJclIntfLinkedList } ================================================== constructor TJclIntfLinkedList.Create(const ACollection: IJclIntfCollection); @@ -16346,6 +16345,7 @@ {$ENDIF THREADSAFE} end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclQueues.pas =================================================================== --- trunk/jcl/source/common/JclQueues.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclQueues.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -50,7 +50,6 @@ type - TJclIntfQueue = class(TJclIntfAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} IJclIntfCloneable, IJclCloneable, IJclPackable, IJclGrowable, IJclContainer, IJclIntfEqualityComparer, IJclIntfQueue) @@ -397,6 +396,7 @@ function Size: Integer; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -483,7 +483,6 @@ uses SysUtils; - //=== { TJclIntfQueue } ======================================================= constructor TJclIntfQueue.Create(ACapacity: Integer); @@ -3883,6 +3882,7 @@ AssignPropertiesTo(Result); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclSortedMaps.pas =================================================================== --- trunk/jcl/source/common/JclSortedMaps.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclSortedMaps.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -50,7 +50,6 @@ JclAbstractContainers, JclContainerIntf, JclArrayLists, JclArraySets; type - TJclIntfIntfSortedEntry = record Key: IInterface; Value: IInterface; @@ -2367,6 +2366,7 @@ function TailMap(FromKey: TObject): IJclSortedMap; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -2522,7 +2522,6 @@ uses SysUtils; - //=== { TJclIntfIntfSortedMap } ============================================== constructor TJclIntfIntfSortedMap.Create(ACapacity: Integer); @@ -29550,6 +29549,7 @@ end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclStacks.pas =================================================================== --- trunk/jcl/source/common/JclStacks.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclStacks.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -52,7 +52,6 @@ JclBase, JclAbstractContainers, JclContainerIntf, JclSynch; type - TJclIntfStack = class(TJclIntfAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} IJclIntfCloneable, IJclCloneable, IJclPackable, IJclGrowable, IJclContainer, IJclIntfEqualityComparer, IJclIntfStack) @@ -363,6 +362,7 @@ function Size: Integer; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -448,7 +448,6 @@ uses SysUtils; - //=== { TJclIntfStack } ======================================================= constructor TJclIntfStack.Create(ACapacity: Integer); @@ -2720,6 +2719,7 @@ AssignPropertiesTo(Result); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclTrees.pas =================================================================== --- trunk/jcl/source/common/JclTrees.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclTrees.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -1680,6 +1680,7 @@ function GetPreviousCursor: TJclTreeNode; override; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -1875,7 +1876,6 @@ uses SysUtils; - //=== { TJclIntfTreeNode } ======================================================= function TJclIntfTreeNode.IndexOfChild(AChild: TJclIntfTreeNode): Integer; @@ -18815,6 +18815,7 @@ end; end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/common/JclVectors.pas =================================================================== --- trunk/jcl/source/common/JclVectors.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/common/JclVectors.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -54,7 +54,6 @@ type TItrStart = (isFirst, isLast); - TJclIntfVector = class(TJclIntfAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} IJclIntfCloneable, IJclCloneable, IJclPackable, IJclGrowable, IJclContainer, IJclIntfEqualityComparer, IJclIntfCollection, IJclIntfList, IJclIntfArray) @@ -1083,6 +1082,7 @@ {$ENDIF SUPPORTS_FOR_IN} end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -1230,7 +1230,6 @@ uses SysUtils; - //=== { TJclIntfVector } ====================================================== constructor TJclIntfVector.Create(ACapacity: Integer); @@ -11040,6 +11039,7 @@ FOwnList.SetObject(FCursor, AObject); end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/prototypes/JclAlgorithms.pas =================================================================== --- trunk/jcl/source/prototypes/JclAlgorithms.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/prototypes/JclAlgorithms.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -34,6 +34,7 @@ unit JclAlgorithms; {$I jcl.inc} + {$I containers\JclAlgorithms.int} {$I containers\JclAlgorithms.imp} interface @@ -46,8 +47,8 @@ // Compare functions (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT -{$JPPEXPANDMACRO SIMPLECOMPAREINT(,,)}*) - +{$JPPEXPANDMACRO SIMPLECOMPAREINT(,,)} +*) {$JPPEXPANDMACRO SIMPLECOMPAREINT(IntegerCompare,,TObject)} function AnsiStrSimpleCompareI(const Obj1, Obj2: AnsiString): Integer; @@ -58,8 +59,8 @@ // Compare functions for equality (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT -{$JPPEXPANDMACRO SIMPLEEQUALITYCOMPAREINT(,,)}*) - +{$JPPEXPANDMACRO SIMPLEEQUALITYCOMPAREINT(,,)} +*) function AnsiStrSimpleEqualityCompareI(const Obj1, Obj2: AnsiString): Boolean; function WideStrSimpleEqualityCompareI(const Obj1, Obj2: WideString): Boolean; {$IFDEF SUPPORTS_UNICODE_STRING} @@ -68,8 +69,8 @@ // Hash conversion functions (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT -{$JPPEXPANDMACRO SIMPLEHASHCONVERTINT(,,,)}*) - +{$JPPEXPANDMACRO SIMPLEHASHCONVERTINT(,,,)} +*) function AnsiStrSimpleHashConvertI(const AString: AnsiString): Integer; function AnsiStrSimpleHashConvertU(const AString: AnsiString): Integer; function AnsiStrSimpleHashConvertUI(const AString: AnsiString): Integer; @@ -80,8 +81,8 @@ // move array algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO MOVEARRAYINT(MoveArray,, overload;)}*) - +{$JPPEXPANDMACRO MOVEARRAYINT(MoveArray,, overload;)} +*) {$JPPEXPANDMACRO MOVEARRAYINT(MoveArray,TDynSizeIntArray, overload;)} {$IFNDEF FPC} {$JPPEXPANDMACRO MOVEARRAYINT(MoveArray,TDynStringArray, overload;)} @@ -90,40 +91,49 @@ // Iterate algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO ITERATEINT(Iterate,,, overload;)}*) +{$JPPEXPANDMACRO ITERATEINT(Iterate,,, overload;)} +*) // Apply algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO APPLYINT(Apply,,, overload;)}*) +{$JPPEXPANDMACRO APPLYINT(Apply,,, overload;)} +*) // Find algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO FINDINT(Find,,,,,, overload;)} -{$JPPEXPANDMACRO FINDEQINT(Find,,,,,, overload;)}*) +{$JPPEXPANDMACRO FINDEQINT(Find,,,,,, overload;)} +*) // CountObject algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO COUNTOBJECTINT(CountObject,,,,,, overload;)} -{$JPPEXPANDMACRO COUNTOBJECTEQINT(CountObject,,,,,, overload;)}*) +{$JPPEXPANDMACRO COUNTOBJECTEQINT(CountObject,,,,,, overload;)} +*) // Copy algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO COPYINT(Copy,, overload;)}*) +{$JPPEXPANDMACRO COPYINT(Copy,, overload;)} +*) // Generate algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO GENERATEINT(Generate,,,,, overload;)}*) +{$JPPEXPANDMACRO GENERATEINT(Generate,,,,, overload;)} +*) // Fill algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO FILLINT(Fill,,,,, overload;)}*) +{$JPPEXPANDMACRO FILLINT(Fill,,,,, overload;)} +*) // Reverse algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO REVERSEINT(Reverse,, overload;)}*) +{$JPPEXPANDMACRO REVERSEINT(Reverse,, overload;)} +*) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO SORTINT(QuickSort,,,,, overload;)}*) +{$JPPEXPANDMACRO SORTINT(QuickSort,,,,, overload;)} +*) var IntfSortProc: TIntfSortProc = QuickSort; @@ -143,7 +153,8 @@ // Sort algorithms (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT -{$JPPEXPANDMACRO SORTINT(Sort,,First,Last,, overload;)}*) +{$JPPEXPANDMACRO SORTINT(Sort,,First,Last,, overload;)} +*) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -782,6 +793,7 @@ (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO MOVEARRAYIMP(,)} + *) {$JPPUNDEF REFCOUNTED}{$JPPDEFINE ZEROINIT}{$JPPEXPANDMACRO MOVEARRAYIMP(MoveArray,TDynSizeIntArray)} @@ -793,36 +805,44 @@ (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO ITERATEIMP(Iterate,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO APPLYIMP(Apply,,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO FINDIMP(Find,,,,,)} {$JPPEXPANDMACRO FINDEQIMP(Find,,,,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO COUNTOBJECTIMP(CountObject,,,,,)} {$JPPEXPANDMACRO COUNTOBJECTEQIMP(CountObject,,,,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO COPYIMP(Copy,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO GENERATEIMP(Generate,,,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO FILLIMP(Fill,,,,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO REVERSEIMP(Reverse,,,,)} + *) (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO QUICKSORTIMP(QuickSort,,,,,,,)} + *) - procedure Sort(const AList: IJclIntfList; First, Last: Integer; AComparator: TIntfCompare); begin IntfSortProc(AList, First, Last, AComparator); Modified: trunk/jcl/source/prototypes/JclArrayLists.pas =================================================================== --- trunk/jcl/source/prototypes/JclArrayLists.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/prototypes/JclArrayLists.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -54,6 +54,7 @@ {$JPPEXPANDMACRO JCLARRAYLISTINT(,,,,,,,,,,,,,,,)} {$JPPEXPANDMACRO JCLARRAYLISTITRINT(,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -61,6 +62,7 @@ TJclArrayIterator<T> = class; {$JPPEXPANDMACRO JCLARRAYLISTINT(TJclArrayList<T>,TJclAbstractContainer<T>,IJclCollection<T>,IJclList<T>,IJclArray<T>,IJclIterator<T>,TDynArray, IJclItemOwner<T>\, IJclEqualityComparer<T>\,, + protected type TDynArray = array of T; @@ -133,6 +135,7 @@ {$JPPEXPANDMACRO JCLARRAYLISTIMP(,,,,,,,,,,,,,)} {$JPPEXPANDMACRO JCLARRAYLISTITRIMP(,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/prototypes/JclArraySets.pas =================================================================== --- trunk/jcl/source/prototypes/JclArraySets.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/prototypes/JclArraySets.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -52,6 +52,7 @@ type (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO JCLARRAYSETINT(,,,,,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -123,6 +124,7 @@ (*$JPPLOOP TRUETYPEINDEX TRUETYPECOUNT {$JPPEXPANDMACRO JCLARRAYSETIMP(,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/prototypes/JclBinaryTrees.pas =================================================================== --- trunk/jcl/source/prototypes/JclBinaryTrees.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/prototypes/JclBinaryTrees.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -55,6 +55,7 @@ {$JPPEXPANDMACRO JCLBINARYTREEINT(,,,,,,,,,,,,,,)} {$JPPEXPANDMACRO JCLBINARYTREEITRINT(,,,,,,,,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -67,6 +68,7 @@ TJclPostOrderBinaryTreeIterator<T> = class; (*$JPPEXPANDMACRO JCLBINARYTREEINT(TBinaryNode,TJclBinaryTree<T>,TJclAbstractContainer<T>,IJclCollection<T>,IJclTree<T>,IJclIterator<T>,IJclTreeIterator<T>, IJclItemOwner<T>\, IJclEqualityComparer<T>\, IJclComparer<T>\,, + protected type TBinaryNode = TJclBinaryNode<T>; @@ -142,6 +144,7 @@ {$JPPEXPANDMACRO JCLBINARYTREEIMP(,,,,,,,,,,,,,,,,)} {$JPPEXPANDMACRO JCLBINARYTREEITRIMP(,,,,,,,,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} Modified: trunk/jcl/source/prototypes/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/prototypes/JclContainerIntf.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/prototypes/JclContainerIntf.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -1,4 +1,4 @@ -{**************************************************************************************************} +{**************************************************************************************************} { } { Project JEDI Code Library (JCL) } { } @@ -66,7 +66,8 @@ // iterate functions Type -> (void) (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT - {$JPPEXPANDMACRO ITERPROCEDURE(,,,)}*) + {$JPPEXPANDMACRO ITERPROCEDURE(,,,)} +*) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN {$JPPEXPANDMACRO ITERPROCEDURE(TIterateProcedure<T>,const ,AItem,T)} @@ -75,7 +76,8 @@ // apply functions Type -> Type (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT - {$JPPEXPANDMACRO APPLYFUNCTION(,,,)}*) + {$JPPEXPANDMACRO APPLYFUNCTION(,,,)} +*) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN {$JPPEXPANDMACRO APPLYFUNCTION(TApplyFunction<T>,const ,AItem,T)} @@ -84,7 +86,8 @@ // comparison functions Type -> Type -> Integer (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT - {$JPPEXPANDMACRO COMPAREFUNCTION(,,)}*) + {$JPPEXPANDMACRO COMPAREFUNCTION(,,)} +*) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN {$JPPEXPANDMACRO COMPAREFUNCTION(TCompare<T>,const ,T)} @@ -93,7 +96,8 @@ // comparison for equality functions Type -> Type -> Boolean (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT - {$JPPEXPANDMACRO EQUALITYCOMPAREFUNCTION(,,)}*) + {$JPPEXPANDMACRO EQUALITYCOMPAREFUNCTION(,,)} +*) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN {$JPPEXPANDMACRO EQUALITYCOMPAREFUNCTION(TEqualityCompare<T>,const ,T)} @@ -102,7 +106,8 @@ // hash functions Type -> Integer (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT - {$JPPEXPANDMACRO HASHFUNCTION(,,,)}*) + {$JPPEXPANDMACRO HASHFUNCTION(,,,)} +*) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN {$JPPEXPANDMACRO HASHFUNCTION(THashConvert<T>,const ,AItem,T)} @@ -249,6 +254,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO EQUALITYCOMPARER(,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -258,6 +264,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO COMPARER(,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -267,6 +274,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO HASHCONVERTER(,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -333,6 +341,7 @@ {$JPPEXPANDMACRO RELEASEEVENT(,,)} {$JPPEXPANDMACRO OWNER(,,,,,,,,)} + *) IJclKeyOwner = interface @@ -355,6 +364,7 @@ {$JPPEXPANDMACRO RELEASEEVENT(TFreeItemEvent<T>,AItem,T)} (*$JPPEXPANDMACRO OWNER(IJclItemOwner<T>,IInterface,{0CC220C1-E705-4B21-9F53-4AD340952165},FreeItem,OnFreeItem,TFreeItemEvent<T>,AItem,T, + function GetOwnsItems: Boolean; property OwnsItems: Boolean read GetOwnsItems;)*) @@ -373,6 +383,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO ITERATOR(,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -382,6 +393,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO TREEITERATOR(,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -391,6 +403,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO BINTREEITERATOR(,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -400,6 +413,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO COLLECTION(,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -409,6 +423,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO LIST(,,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -418,7 +433,8 @@ // Pointer functions for sort algorithms (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT - {$JPPEXPANDMACRO SORTPROC(,,)}*) + {$JPPEXPANDMACRO SORTPROC(,,)} +*) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN {$JPPEXPANDMACRO SORTPROC(TSortProc<T>,IJclList<T>,TCompare<T>)} @@ -427,6 +443,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO ARRAY(,,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -436,6 +453,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO SET(,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -447,6 +465,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO TREE(,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -456,6 +475,7 @@ (*$JPPLOOP ALLMAPINDEX ALLMAPCOUNT {$JPPEXPANDMACRO MAP(,,,,,,,,)} + *) (*IJclMultiIntfIntfMap = interface(IJclIntfIntfMap) @@ -477,6 +497,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO QUEUE(,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -486,6 +507,7 @@ (*$JPPLOOP ALLMAPINDEX ALLMAPCOUNT {$JPPEXPANDMACRO SORTEDMAP(,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} @@ -496,6 +518,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO SORTEDSET(,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -505,6 +528,7 @@ (*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT {$JPPEXPANDMACRO STACK(,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN Modified: trunk/jcl/source/prototypes/JclHashMaps.pas =================================================================== --- trunk/jcl/source/prototypes/JclHashMaps.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/prototypes/JclHashMaps.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -57,6 +57,7 @@ {$JPPEXPANDMACRO JCLHASHMAPTYPESINT(,,,)} {$JPPEXPANDMACRO JCLHASHMAPINT(,,,,,,,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -64,6 +65,7 @@ (*$JPPEXPANDMACRO JCLHASHMAPTYPESINT(TJclHashEntry<TKey\,TValue>,TJclBucket<TKey\,TValue>,TKey,TValue)*) (*$JPPEXPANDMACRO JCLHASHMAPINT(TBucket,TJclHashMap<TKey\,TValue>,TJclAbstractContainerBase,IJclMap<TKey\,TValue>,IJclSet<TKey>,IJclCollection<TValue>, IJclPairOwner<TKey\, TValue>\,, + protected type TBucket = TJclBucket<TKey\,TValue>; @@ -203,6 +205,7 @@ {$JPPEXPANDMACRO JCLHASHMAPTYPESIMP(,,)} {$JPPEXPANDMACRO JCLHASHMAPIMP(,,,,,,,,,,,,,,,,)} + *) {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -210,6 +213,7 @@ {$JPPEXPANDMACRO JCLHASHMAPTYPESIMP(TJclBucket<TKey\, TValue>,Default(TKey),Default(TValue))} {$JPPEXPANDMACRO JCLHASHMAPIMP(TJclHashMap<TKey\, TValue>,TBucket,IJclMap<TKey\, TValue>,IJclSet<TKey>,IJclIterator<TKey>,IJclCollection<TValue>,; AOwnsKeys: Boolean,; AOwnsValues: Boolean, + FOwnsKeys := AOwnsKeys; FOwnsValues := AOwnsValues;,const ,TKey,Default(TKey),const ,TValue,Default(TValue),CreateEmptyArraySet(FSize, False),CreateEmptyArrayList(FSize, False))} Modified: trunk/jcl/source/prototypes/JclHashSets.pas =================================================================== --- trunk/jcl/source/prototypes/JclHashSets.pas 2010-12-14 12:07:14 UTC (rev 3436) +++ trunk/jcl/source/prototypes/JclHashSets.pas 2010-12-14 12:11:49 UTC (rev 3437) @@ -70,12 +70,14 @@ {$ENDIF ~SUPPORTS_GENERICS} (*$JPPEXPANDMACRO JCLHASHSETINT(TJclIntfHashSet,TJclIntfAbstractContainer,IJclIntfCollection,IJclIntfSet,IJclIntfMap,IJclIntfIterator, IJclIntfEqualityComparer\,, + protected function CreateEmptyContainer: TJclAbstractContainerBase; override; public constructor Create(ACapacity: Integer); overload;,,const ,AInterface,IInterface)*) (*$JPPEXPANDMACRO JCLHASHSETINT(TJclAnsiStrHashSet,TJclAnsiStrAbstractCollection,IJclAnsiStrCollection,IJclAnsiStrSet,IJclAnsiStrMap,IJclAnsiStrIterator, IJclStrContainer\, IJclAnsiStrContainer\, IJclAnsiStrEqualityComparer\,, + protected function CreateEmptyContainer: TJclAbstractContainerBase; override; public @@ -88,6 +90,7 @@ procedure SetEncoding(Value: TJclAnsiStrEncoding); override;, override;,const ,AString,AnsiString)*) (*$JPPEXPANDMACRO JCLHASHSETINT(TJclWideStrHashSet,TJclWideStrAbstractCollection,IJclWideStrCollection,IJclWideStrSet,IJclWideStrMap,IJclWideStrIterator, IJclStrContainer\, IJclWideStrContainer\, IJclWideStrEqualityComparer\,, + protected function CreateEmptyContainer: TJclAbstractContainerBase; override; public @@ -101,6 +104,7 @@ {$IFDEF SUPPORTS_UNICODE_STRING} (*$JPPEXPANDMACRO JCLHASHSETINT(TJclUnicodeStrHashSet,TJclUnicodeStrAbstractCollection,IJclUnicodeStrCollection,IJclUnicodeStrSet,IJclUnicodeStrMap,IJclUnicodeStrIterator, IJclStrContainer\, IJclUnicodeStrContainer\, IJclUnicodeStrEqualityComparer\,, + protected function CreateEmptyContainer: TJclAbstractContainerBase; override; public @@ -121,6 +125,7 @@ {$ENDIF CONTAINER_UNICODESTR} (*$JPPEXPANDMACRO JCLHASHSETINT(TJclSingleHashSet,TJclSingleAbstractContainer,IJclSingleCollection,IJclSingleSet,IJclSingleMap,IJclSingleIterator, IJclSingleContainer\, IJclSingleEqualityComparer\,, + protected function CreateEmptyContainer: TJclAbstractContainerBase; override; public @@ -130,6 +135,7 @@ pr... [truncated message content] |
From: <ou...@us...> - 2010-12-14 12:07:20
|
Revision: 3436 http://jcl.svn.sourceforge.net/jcl/?rev=3436&view=rev Author: outchy Date: 2010-12-14 12:07:14 +0000 (Tue, 14 Dec 2010) Log Message: ----------- Expand the macros in macro parameters. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppState.pas Modified: trunk/jcl/devtools/jpp/JppState.pas =================================================================== --- trunk/jcl/devtools/jpp/JppState.pas 2010-12-14 06:49:32 UTC (rev 3435) +++ trunk/jcl/devtools/jpp/JppState.pas 2010-12-14 12:07:14 UTC (rev 3436) @@ -170,7 +170,8 @@ uses TypInfo, - JclStrings, JclArrayLists, JclHashMaps, JclStacks; + JclStrings, JclArrayLists, JclHashMaps, JclStacks, + JppParser; //=== { TPppState } ========================================================== @@ -212,6 +213,7 @@ AssociationByName: Boolean; Index, ParamIndex: Integer; AParamName, AParamText: string; + Parser: TJppParser; begin SetLength(Result, Length(ParamValues)); AssociationByName := True; @@ -221,7 +223,7 @@ begin StrParams.Add(ParamValues[Index]); AParamName := StrParams.Names[Index]; - if AParamName <> '' then + if Assigned(ParamNames) and (AParamName <> '') then begin // verify parameter names ParamIndex := ParamNames.IndexOf(AParamName); @@ -237,6 +239,17 @@ AParamText := StrParams.Values[ParamNames.Strings[Index]] else AParamText := StrParams.Strings[Index]; + Self.PushState; + try + Parser := TJppParser.Create(AParamText, Self); + try + AParamText := Parser.Parse; + finally + Parser.Free; + end; + finally + Self.PopState; + end; Result[Index] := WideString(AParamText); end; finally @@ -461,7 +474,8 @@ APppStateItem: TPppStateItem; begin APppStateItem := PeekStateItem; - APppStateItem.TriState := Value; + if APppStateItem.TriState <> ttUndef then + APppStateItem.TriState := Value; end; function TPppState.IsFileExcluded(const AName: string): Boolean; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-14 06:49:42
|
Revision: 3435 http://jcl.svn.sourceforge.net/jcl/?rev=3435&view=rev Author: outchy Date: 2010-12-14 06:49:32 +0000 (Tue, 14 Dec 2010) Log Message: ----------- Deletion of nested prototype files _GraphUtils.pas and _Graphics.pas. Regenerated JclAlgorithms and JclGraphics from templates. Modified Paths: -------------- trunk/jcl/source/common/JclAlgorithms.pas trunk/jcl/source/prototypes/Makefile.mak trunk/jcl/source/vcl/JclGraphics.pas Added Paths: ----------- trunk/jcl/source/prototypes/JclGraphUtils.pas trunk/jcl/source/prototypes/JclGraphics.pas Removed Paths: ------------- trunk/jcl/source/prototypes/JclGraphUtils.pas trunk/jcl/source/prototypes/JclGraphics.pas trunk/jcl/source/prototypes/_GraphUtils.pas trunk/jcl/source/prototypes/_Graphics.pas Modified: trunk/jcl/source/common/JclAlgorithms.pas =================================================================== --- trunk/jcl/source/common/JclAlgorithms.pas 2010-12-14 06:32:27 UTC (rev 3434) +++ trunk/jcl/source/common/JclAlgorithms.pas 2010-12-14 06:49:32 UTC (rev 3435) @@ -1183,7 +1183,6 @@ end; end; - procedure MoveArray(var List: TDynAnsiStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then @@ -1191,7 +1190,6 @@ FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); - end; end; Deleted: trunk/jcl/source/prototypes/JclGraphUtils.pas =================================================================== --- trunk/jcl/source/prototypes/JclGraphUtils.pas 2010-12-14 06:32:27 UTC (rev 3434) +++ trunk/jcl/source/prototypes/JclGraphUtils.pas 2010-12-14 06:49:32 UTC (rev 3435) @@ -1,3 +0,0 @@ -unit JclGraphUtils; -{$DEFINE PROTOTYPE} -{$I _GraphUtils.pas} \ No newline at end of file Copied: trunk/jcl/source/prototypes/JclGraphUtils.pas (from rev 3431, trunk/jcl/source/prototypes/_GraphUtils.pas) =================================================================== --- trunk/jcl/source/prototypes/JclGraphUtils.pas (rev 0) +++ trunk/jcl/source/prototypes/JclGraphUtils.pas 2010-12-14 06:49:32 UTC (rev 3435) @@ -0,0 +1,2489 @@ +{**************************************************************************************************} +{ } +{ 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 JclGraphUtils.pas. } +{ } +{ The Initial Developers of the Original Code are Pelle F. S. Liljendal and Marcel van Brakel. } +{ Portions created by these individuals are Copyright (C) of these individuals. } +{ All Rights Reserved. } +{ } +{ Contributors: } +{ Jack N.A. Bakker } +{ Mike Lischke } +{ Robert Marquardt (marquardt) } +{ Alexander Radchenko } +{ Robert Rossmair (rrossmair) } +{ Olivier Sannier (obones) } +{ Matthias Thoma (mthoma) } +{ Petr Vones (pvones) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclGraphUtils; + +interface + +{$I jcl.inc} + +uses + Types, + {$IFDEF MSWINDOWS} + Windows, + {$ENDIF MSWINDOWS} + SysUtils, + {$IFDEF VCL} + Graphics, + {$ENDIF VCL} + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclBase; + +type + PColor32 = ^TColor32; + TColor32 = type Longword; + PColor32Array = ^TColor32Array; + TColor32Array = array [0..MaxInt div SizeOf(TColor32) - 1] of TColor32; + PPalette32 = ^TPalette32; + TPalette32 = array [Byte] of TColor32; + TArrayOfColor32 = array of TColor32; + + { Blending Function Prototypes } + TCombineReg = function(X, Y, W: TColor32): TColor32; + TCombineMem = procedure(F: TColor32; var B: TColor32; W: TColor32); + TBlendReg = function(F, B: TColor32): TColor32; + TBlendMem = procedure(F: TColor32; var B: TColor32); + TBlendRegEx = function(F, B, M: TColor32): TColor32; + TBlendMemEx = procedure(F: TColor32; var B: TColor32; M: TColor32); + TBlendLine = procedure(Src, Dst: PColor32; Count: Integer); + TBlendLineEx = procedure(Src, Dst: PColor32; Count: Integer; M: TColor32); + + { Auxiliary structure to support TColor manipulation } + TColorRec = packed record + case Integer of + 0: (Value: Longint); + 1: (Red, Green, Blue: Byte); + 2: (R, G, B, Flag: Byte); + {$IFDEF MSWINDOWS} + 3: (Index: Word); // GetSysColor, PaletteIndex + {$ENDIF MSWINDOWS} + end; + + TColorVector = record + case Integer of + 0: (Coord: array [0..2] of Single); + 1: (R, G, B: Single); + 2: (H, L, S: Single); + end; + + THLSValue = 0..240; + THLSVector = record + Hue: THLSValue; + Luminance: THLSValue; + Saturation: THLSValue; + end; + + {$IFDEF VCL} + TPointArray = array of TPoint; + PPointArray = ^TPointArray; + {$ENDIF VCL} + + { position codes for clipping algorithm } + TClipCode = (ccLeft, ccRight, ccAbove, ccBelow); + TClipCodes = set of TClipCode; + PClipCodes = ^TClipCodes; + +const + { Some predefined color constants } + clBlack32 = TColor32($FF000000); + clDimGray32 = TColor32($FF3F3F3F); + clGray32 = TColor32($FF7F7F7F); + clLightGray32 = TColor32($FFBFBFBF); + clWhite32 = TColor32($FFFFFFFF); + clMaroon32 = TColor32($FF7F0000); + clGreen32 = TColor32($FF007F00); + clOlive32 = TColor32($FF7F7F00); + clNavy32 = TColor32($FF00007F); + clPurple32 = TColor32($FF7F007F); + clTeal32 = TColor32($FF007F7F); + clRed32 = TColor32($FFFF0000); + clLime32 = TColor32($FF00FF00); + clYellow32 = TColor32($FFFFFF00); + clBlue32 = TColor32($FF0000FF); + clFuchsia32 = TColor32($FFFF00FF); + clAqua32 = TColor32($FF00FFFF); + + { Some semi-transparent color constants } + clTrWhite32 = TColor32($7FFFFFFF); + clTrBlack32 = TColor32($7F000000); + clTrRed32 = TColor32($7FFF0000); + clTrGreen32 = TColor32($7F00FF00); + clTrBlue32 = TColor32($7F0000FF); + +procedure EMMS; + +// Dialog Functions +{$IFDEF MSWINDOWS} +function DialogUnitsToPixelsX(const DialogUnits: Word): Word; +function DialogUnitsToPixelsY(const DialogUnits: Word): Word; +function PixelsToDialogUnitsX(const PixelUnits: Word): Word; +function PixelsToDialogUnitsY(const PixelUnits: Word): Word; +{$ENDIF MSWINDOWS} + +// Points +function NullPoint: TPoint; + +function PointAssign(const X, Y: Integer): TPoint; +procedure PointCopy(var Dest: TPoint; const Source: TPoint); +function PointEqual(const P1, P2: TPoint): Boolean; +function PointIsNull(const P: TPoint): Boolean; +procedure PointMove(var P: TPoint; const DeltaX, DeltaY: Integer); + +// Rectangles +function NullRect: TRect; + +function RectAssign(const Left, Top, Right, Bottom: Integer): TRect; +function RectAssignPoints(const TopLeft, BottomRight: TPoint): TRect; +function RectBounds(const Left, Top, Width, Height: Integer): TRect; +function RectCenter(const R: TRect): TPoint; +procedure RectCopy(var Dest: TRect; const Source: TRect); +procedure RectFitToScreen(var R: TRect); { TODO -cHelp : Doc } +procedure RectGrow(var R: TRect; const Delta: Integer); +procedure RectGrowX(var R: TRect; const Delta: Integer); +procedure RectGrowY(var R: TRect; const Delta: Integer); +function RectEqual(const R1, R2: TRect): Boolean; +function RectHeight(const R: TRect): Integer; +function RectIncludesPoint(const R: TRect; const Pt: TPoint): Boolean; +function RectIncludesRect(const R1, R2: TRect): Boolean; +function RectIntersection(const R1, R2: TRect): TRect; +function RectIntersectRect(const R1, R2: TRect): Boolean; +function RectIsEmpty(const R: TRect): Boolean; +function RectIsNull(const R: TRect): Boolean; +function RectIsSquare(const R: TRect): Boolean; +function RectIsValid(const R: TRect): Boolean; +procedure RectMove(var R: TRect; const DeltaX, DeltaY: Integer); +procedure RectMoveTo(var R: TRect; const X, Y: Integer); +procedure RectNormalize(var R: TRect); +function RectsAreValid(R: array of TRect): Boolean; +function RectUnion(const R1, R2: TRect): TRect; +function RectWidth(const R: TRect): Integer; + +// Clipping +function ClipCodes(const X, Y, MinX, MinY, MaxX, MaxY: Float): TClipCodes; overload; +function ClipCodes(const X, Y: Float; const ClipRect: TRect): TClipCodes; overload; +function ClipLine(var X1, Y1, X2, Y2: Integer; const ClipRect: TRect): Boolean; overload; +function ClipLine(var X1, Y1, X2, Y2: Float; const MinX, MinY, MaxX, MaxY: Float; + Codes: PClipCodes = nil): Boolean; overload; +procedure DrawPolyLine(const Canvas: TCanvas; var Points: TPointArray; const ClipRect: TRect); + +// Color +type + EColorConversionError = class(EJclError); + +procedure GetRGBValue(const Color: TColor; out Red, Green, Blue: Byte); +function SetRGBValue(const Red, Green, Blue: Byte): TColor; +function GetColorBlue(const Color: TColor): Byte; +function GetColorFlag(const Color: TColor): Byte; +function GetColorGreen(const Color: TColor): Byte; +function GetColorRed(const Color: TColor): Byte; +function SetColorBlue(const Color: TColor; const Blue: Byte): TColor; +function SetColorFlag(const Color: TColor; const Flag: Byte): TColor; +function SetColorGreen(const Color: TColor; const Green: Byte): TColor; +function SetColorRed(const Color: TColor; const Red: Byte): TColor; + +function BrightColor(const Color: TColor; const Pct: Single): TColor; +function BrightColorChannel(const Channel: Byte; const Pct: Single): Byte; +function DarkColor(const Color: TColor; const Pct: Single): TColor; +function DarkColorChannel(const Channel: Byte; const Pct: Single): Byte; + +procedure CIED65ToCIED50(var X, Y, Z: Extended); +procedure CMYKToBGR(const Source, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +procedure CMYKToBGR(const C, M, Y, K, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +procedure CIELABToBGR(const Source, Target: Pointer; const Count: Cardinal); overload; +procedure CIELABToBGR(LSource, aSource, bSource: PByte; const Target: Pointer; const Count: Cardinal); overload; +procedure RGBToBGR(const Source, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +procedure RGBToBGR(const R, G, B, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +procedure RGBAToBGRA(const Source, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); + +procedure WinColorToOpenGLColor(const Color: TColor; out Red, Green, Blue: Float); +function OpenGLColorToWinColor(const Red, Green, Blue: Float): TColor; + +function Color32(WinColor: TColor): TColor32; overload; +function Color32(const R, G, B: Byte; const A: Byte = $FF): TColor32; overload; +function Color32(const Index: Byte; const Palette: TPalette32): TColor32; overload; +function Gray32(const Intensity: Byte; const Alpha: Byte = $FF): TColor32; +function WinColor(const Color32: TColor32): TColor; + +function RedComponent(const Color32: TColor32): Integer; +function GreenComponent(const Color32: TColor32): Integer; +function BlueComponent(const Color32: TColor32): Integer; +function AlphaComponent(const Color32: TColor32): Integer; + +function Intensity(const R, G, B: Single): Single; overload; +function Intensity(const Color32: TColor32): Integer; overload; + +function SetAlpha(const Color32: TColor32; NewAlpha: Integer): TColor32; + +procedure HLSToRGB(const H, L, S: Single; out R, G, B: Single); overload; +function HLSToRGB(const HLS: TColorVector): TColorVector; overload; +function HLSToRGB(const Hue, Luminance, Saturation: THLSValue): TColorRef; overload; +procedure RGBToHLS(const R, G, B: Single; out H, L, S: Single); overload; +function RGBToHLS(const RGB: TColorVector): TColorVector; overload; +function RGBToHLS(const RGBColor: TColorRef): THLSVector; overload; + +// obsolete; use corresponding HLS aliases instead +//procedure HSLToRGB(const H, S, L: Single; out R, G, B: Single); overload; +//procedure RGBToHSL(const R, G, B: Single; out H, S, L: Single); overload; + +// keep HSL identifier to avoid ambiguity with HLS overload +function HSLToRGB(const H, S, L: Single): TColor32; overload; +procedure RGBToHSL(const RGB: TColor32; out H, S, L: Single); overload; + +{$IFDEF VCL} +function SetBitmapColors(Bmp: TBitmap; const Colors: array of TColor; StartIndex: Integer): Integer; +{$ENDIF VCL} + +// Misc +function ColorToHTML(const Color: TColor): string; + +// Petr Vones +{$IFDEF VCL} +function DottedLineTo(const Canvas: TCanvas; const X, Y: Integer): Boolean; overload; +{$ENDIF VCL} +{$IFDEF MSWINDOWS} +function ShortenString(const DC: HDC; const S: WideString; const Width: Integer; const RTL: Boolean; + EllipsisWidth: Integer = 0): WideString; +{$ENDIF MSWINDOWS} + +var + { Blending Function Variables } + CombineReg: TCombineReg; + CombineMem: TCombineMem; + + BlendReg: TBlendReg; + BlendMem: TBlendMem; + + BlendRegEx: TBlendRegEx; + BlendMemEx: TBlendMemEx; + + BlendLine: TBlendLine; + BlendLineEx: TBlendLineEx; + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; + LogPath: 'JCL\source\vcl'; + Extra: ''; + Data: nil + ); +{$ENDIF UNITVERSIONING} + +implementation + +uses + {$IFDEF VCL} + Classes, Consts, + {$ENDIF VCL} + Math, + JclVclResources, JclSysInfo, JclLogic; + +type + // resampling support types + TRGBInt = record + R: Integer; + G: Integer; + B: Integer; + end; + + PRGBWord = ^TRGBWord; + TRGBWord = record + R: Word; + G: Word; + B: Word; + end; + + PRGBAWord = ^TRGBAWord; + TRGBAWord = record + R: Word; + G: Word; + B: Word; + A: Word; + end; + + PBGR = ^TBGR; + TBGR = packed record + B: Byte; + G: Byte; + R: Byte; + end; + + PBGRA = ^TBGRA; + TBGRA = packed record + B: Byte; + G: Byte; + R: Byte; + A: Byte; + end; + + PRGB = ^TRGB; + TRGB = packed record + R: Byte; + G: Byte; + B: Byte; + end; + + PRGBA = ^TRGBA; + TRGBA = packed record + R: Byte; + G: Byte; + B: Byte; + A: Byte; + end; + +const + { Component masks } + _R = TColor32($00FF0000); + _G = TColor32($0000FF00); + _B = TColor32($000000FF); + _RGB = TColor32($00FFFFFF); + Bias = $00800080; + +var + MMX_ACTIVE: Boolean; + +{$IFDEF VCL} + +procedure OutOfResources; +begin + raise EOutOfResources.CreateRes(@SOutOfResources); +end; + +procedure GDIError; +var + ErrorCode: Integer; + Buf: array [0..255] of Char; +begin + ErrorCode := GetLastError; + if (ErrorCode <> 0) and (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, + ErrorCode, LOCALE_USER_DEFAULT, Buf, SizeOf(Buf), nil) <> 0) then + raise EOutOfResources.Create(Buf) + else + OutOfResources; +end; + +function GDICheck(Value: Integer): Integer; +begin + if Value = 0 then GDIError; + Result := Value; +end; + +{$ENDIF VCL} + +//=== Internal LowLevel ====================================================== + +function ColorSwap(WinColor: TColor): TColor32; +// this function swaps R and B bytes in ABGR and writes $FF into A component +begin + Result := $FF000000 or // A component + TColor32((WinColor and $0000FF) shl 16) or // R component + TColor32( WinColor and $00FF00) or // G component + TColor32((WinColor and $FF0000) shr 16); // B component +end; + +//=== Blending routines ====================================================== + +function _CombineReg(X, Y, W: TColor32): TColor32; +begin + // combine RGBA channels of colors X and Y with the weight of X given in W + // Result Z = W * X + (1 - W) * Y (all channels are combined, including alpha) + + if W = 0 then + Result := Y //May be if W <= 0 ??? + else + if W = $FF then Result := X //May be if W >= $FF ??? Or if W > $FF ??? + else + begin + Result := + (((((X shr 8 {00Xa00Xg}) and $00FF00FF {00X100X2}) * W {P1**P2**}) + + Bias) and $FF00FF00 {P100P200}) {Pa00Pg00} or + (((((X {00Xr00Xb} and $00FF00FF {00X100X2}) * W {P1**P2**}) + Bias) and + $FF00FF00 {P100P200}) shr 8 {00Pr00Pb}) {PaPrPgPb}; + + W := W xor $FF; // W := 1 - W; + //W := $100 - W; // May be so ??? + + Result := Result {PaPrPgPb} + ( + (((((Y shr 8 {00Ya00Yg}) and $00FF00FF {00X100X2}) * W {P1**P2**}) + + Bias) and $FF00FF00 {P100P200}) {Qa00Qg00} or + (((((Y {00Yr00Yb} and $00FF00FF {00X100X2}) * W {P1**P2**}) + Bias) and + $FF00FF00 {P100P200}) shr 8 {00Qr00Qb}) {QaQrQgQb} + ) {ZaZrZgZb}; + end; +end; + +procedure _CombineMem(F: TColor32; var B: TColor32; W: TColor32); +begin + B := _CombineReg(F, B, W); +end; + +function _BlendReg(F, B: TColor32): TColor32; +begin + Result := _CombineReg(F, B, F shr 24); +end; + +procedure _BlendMem(F: TColor32; var B: TColor32); +begin + B := _CombineReg(F, B, F shr 24); +end; + +function _BlendRegEx(F, B, M: TColor32): TColor32; +begin + Result := _CombineReg(F, B, ((F shr 24) * M) shr 8); +end; + +procedure _BlendMemEx(F: TColor32; var B: TColor32; M: TColor32); +begin + B := _CombineReg(F, B, ((F shr 24) * M) shr 8); +end; + + +procedure _BlendLine(Src, Dst: PColor32; Count: Integer); assembler; +asm + {$IFDEF CPU32} + // EAX <- Src + // EDX <- Dst + // ECX <- Count + + // test the counter for zero or negativity + TEST ECX, ECX + JS @4 + + PUSH EBX + PUSH ESI + PUSH EDI + + MOV ESI, EAX // ESI <- Src + MOV EDI, EDX // EDI <- Dst + + // loop start +@1: MOV EAX, [ESI] + TEST EAX, $FF000000 + JZ @3 // complete transparency, proceed to next point + + PUSH ECX // store counter + + // Get weight W = Fa * M + MOV ECX, EAX // ECX <- Fa Fr Fg Fb + SHR ECX, 24 // ECX <- 00 00 00 Fa + + // Test Fa = 255 ? + CMP ECX, $FF + JZ @2 + + // P = W * F + MOV EBX, EAX // EBX <- Fa Fr Fg Fb + AND EAX, $00FF00FF // EAX <- 00 Fr 00 Fb + AND EBX, $FF00FF00 // EBX <- Fa 00 Fg 00 + IMUL EAX, ECX // EAX <- Pr ** Pb ** + SHR EBX, 8 // EBX <- 00 Fa 00 Fg + IMUL EBX, ECX // EBX <- Pa ** Pg ** + ADD EAX, Bias + AND EAX, $FF00FF00 // EAX <- Pr 00 Pb 00 + SHR EAX, 8 // EAX <- 00 Pr ** Pb + ADD EBX, Bias + AND EBX, $FF00FF00 // EBX <- Pa 00 Pg 00 + OR EAX, EBX // EAX <- Pa Pr Pg Pb + + // W = 1 - W; Q = W * B + MOV EDX, [EDI] + XOR ECX, $000000FF // ECX <- 1 - ECX + MOV EBX, EDX // EBX <- Ba Br Bg Bb + AND EDX, $00FF00FF // ESI <- 00 Br 00 Bb + AND EBX, $FF00FF00 // EBX <- Ba 00 Bg 00 + IMUL EDX, ECX // ESI <- Qr ** Qb ** + SHR EBX, 8 // EBX <- 00 Ba 00 Bg + IMUL EBX, ECX // EBX <- Qa ** Qg ** + ADD EDX, Bias + AND EDX, $FF00FF00 // ESI <- Qr 00 Qb 00 + SHR EDX, 8 // ESI <- 00 Qr ** Qb + ADD EBX, Bias + AND EBX, $FF00FF00 // EBX <- Qa 00 Qg 00 + OR EBX, EDX // EBX <- Qa Qr Qg Qb + + // Z = P + Q (assuming no overflow at each byte) + ADD EAX, EBX // EAX <- Za Zr Zg Zb +@2: MOV [EDI], EAX + + POP ECX // restore counter + +@3: ADD ESI, 4 + ADD EDI, 4 + + // loop end + DEC ECX + JNZ @1 + + POP EDI + POP ESI + POP EBX + +@4: RET + {$ENDIF CPU32} + {$IFDEF CPU64} + TODO + {$ENDIF CPU64} +end; + +procedure _BlendLineEx(Src, Dst: PColor32; Count: Integer; M: TColor32); +begin + while Count > 0 do + begin + _BlendMemEx(Src^, Dst^, M); + Inc(Src); + Inc(Dst); + Dec(Count); + end; +end; + +{ MMX versions } + +var + AlphaTable: Pointer; + bias_ptr: Pointer; + alpha_ptr: Pointer; + +procedure GenAlphaTable; +var + I: Integer; + L: Longword; + P: ^Longword; +begin + GetMem(AlphaTable, 257 * 8); + alpha_ptr := Pointer(Integer(AlphaTable) and $FFFFFFF8); + if Integer(alpha_ptr) < Integer(AlphaTable) then + alpha_ptr := Pointer(Integer(alpha_ptr) + 8); + P := alpha_ptr; + for I := 0 to 255 do + begin + L := I + I shl 16; + P^ := L; + Inc(P); + P^ := L; + Inc(P); + end; + bias_ptr := Pointer(Integer(alpha_ptr) + $80 * 8); +end; + +procedure FreeAlphaTable; +begin + FreeMem(AlphaTable); + AlphaTable := nil; +end; + +procedure EMMS; +begin + if MMX_ACTIVE then + asm + db $0F, $77 // EMMS + end; +end; + +function M_CombineReg(X, Y, W: TColor32): TColor32; assembler; +asm + {$IFDEF CPU32} + // EAX - Color X + // EDX - Color Y + // ECX - Weight of X [0..255] + // Result := W * (X - Y) + Y + + db $0F, $EF, $C0 // PXOR MM0, MM0 + db $0F, $6E, $C8 // MOVD MM1, EAX + SHL ECX, 3 + db $0F, $6E, $D2 // MOVD MM2, EDX + db $0F, $60, $C8 // PUNPCKLBW MM1, MM0 + db $0F, $60, $D0 // PUNPCKLBW MM2, MM0 + ADD ECX, alpha_ptr + db $0F, $F9, $CA // PSUBW MM1, MM2 + db $0F, $D5, $09 // PMULLW MM1, [ECX] + db $0F, $71, $F2,$08 // PSLLW MM2, 8 + MOV ECX, bias_ptr + db $0F, $FD, $11 // PADDW MM2, [ECX] + db $0F, $FD, $CA // PADDW MM1, MM2 + db $0F, $71, $D1, $08 // PSRLW MM1, 8 + db $0F, $67, $C8 // PACKUSWB MM1, MM0 + db $0F, $7E, $C8 // MOVD EAX, MM1 + {$ENDIF CPU32} + {$IFDEF CPU64} + TODO + {$ENDIF CPU64} +end; + +procedure M_CombineMem(F: TColor32; var B: TColor32; W: TColor32); +begin + B := M_CombineReg(F, B, W); +end; + +function M_BlendReg(F, B: TColor32): TColor32; assembler; +asm + {$IFDEF CPU32} + // blend foreground color (F) to a background color (B), + // using alpha channel value of F + // EAX <- F + // EDX <- B + // Result := Fa * (Frgb - Brgb) + Brgb + db $0F, $EF, $DB // PXOR MM3, MM3 + db $0F, $6E, $C0 // MOVD MM0, EAX + db $0F, $6E, $D2 // MOVD MM2, EDX + db $0F, $60, $C3 // PUNPCKLBW MM0, MM3 + MOV ECX, bias_ptr + db $0F, $60, $D3 // PUNPCKLBW MM2, MM3 + db $0F, $6F, $C8 // MOVQ MM1, MM0 + db $0F, $69, $C9 // PUNPCKHWD MM1, MM1 + db $0F, $F9, $C2 // PSUBW MM0, MM2 + db $0F, $6A, $C9 // PUNPCKHDQ MM1, MM1 + db $0F, $71, $F2, $08 // PSLLW MM2, 8 + db $0F, $D5, $C1 // PMULLW MM0, MM1 + db $0F, $FD, $11 // PADDW MM2, [ECX] + db $0F, $FD, $D0 // PADDW MM2, MM0 + db $0F, $71, $D2, $08 // PSRLW MM2, 8 + db $0F, $67, $D3 // PACKUSWB MM2, MM3 + db $0F, $7E, $D0 // MOVD EAX, MM2 + {$ENDIF CPU32} + {$IFDEF CPU64} + TODO + {$ENDIF CPU64} +end; + +procedure M_BlendMem(F: TColor32; var B: TColor32); +begin + B := M_BlendReg(F, B); +end; + +function M_BlendRegEx(F, B, M: TColor32): TColor32; assembler; +asm + {$IFDEF CPU32} + // blend foreground color (F) to a background color (B), + // using alpha channel value of F + // EAX <- F + // EDX <- B + // ECX <- M + // Result := M * Fa * (Frgb - Brgb) + Brgb + PUSH EBX + MOV EBX, EAX + SHR EBX, 24 + IMUL ECX, EBX + SHR ECX, 8 + JZ @1 + + db $0F, $EF, $C0 // PXOR MM0, MM0 + db $0F, $6E, $C8 // MOVD MM1, EAX + SHL ECX, 3 + db $0F, $6E, $D2 // MOVD MM2, EDX + db $0F, $60, $C8 // PUNPCKLBW MM1, MM0 + db $0F, $60, $D0 // PUNPCKLBW MM2, MM0 + ADD ECX, alpha_ptr + db $0F, $F9, $CA // PSUBW MM1, MM2 + db $0F, $D5, $09 // PMULLW MM1, [ECX] + db $0F, $71, $F2, $08 // PSLLW MM2, 8 + MOV ECX, bias_ptr + db $0F, $FD, $11 // PADDW MM2, [ECX] + db $0F, $FD, $CA // PADDW MM1, MM2 + db $0F, $71, $D1, $08 // PSRLW MM1, 8 + db $0F, $67, $C8 // PACKUSWB MM1, MM0 + db $0F, $7E, $C8 // MOVD EAX, MM1 + +@1: MOV EAX, EDX + POP EBX + {$ENDIF CPU32} + {$IFDEF CPU64} + TODO + {$ENDIF CPU64} +end; + +procedure M_BlendMemEx(F: TColor32; var B: TColor32; M: TColor32); +begin + B := M_BlendRegEx(F, B, M); +end; + +procedure M_BlendLine(Src, Dst: PColor32; Count: Integer); assembler; +asm + {$IFDEF CPU32} + // EAX <- Src + // EDX <- Dst + // ECX <- Count + + // test the counter for zero or negativity + TEST ECX, ECX + JS @4 + + PUSH ESI + PUSH EDI + + MOV ESI, EAX // ESI <- Src + MOV EDI, EDX // EDI <- Dst + + // loop start +@1: MOV EAX, [ESI] + TEST EAX, $FF000000 + JZ @3 // complete transparency, proceed to next point + CMP EAX, $FF000000 + JNC @2 // opaque pixel, copy without blending + + // blend + db $0F, $EF, $DB // PXOR MM3, MM3 + db $0F, $6E, $C0 // MOVD MM0, EAX + db $0F, $6E, $17 // MOVD MM2, [EDI] + db $0F, $60, $C3 // PUNPCKLBW MM0, MM3 + MOV EAX, bias_ptr + db $0F, $60, $D3 // PUNPCKLBW MM2, MM3 + db $0F, $6F, $C8 // MOVQ MM1, MM0 + db $0F, $69, $C9 // PUNPCKHWD MM1, MM1 + db $0F, $F9, $C2 // PSUBW MM0, MM2 + db $0F, $6A, $C9 // PUNPCKHDQ MM1, MM1 + db $0F, $71, $F2, $08 // PSLLW MM2, 8 + db $0F, $D5, $C1 // PMULLW MM0, MM1 + db $0F, $FD, $10 // PADDW MM2, [EAX] + db $0F, $FD, $D0 // PADDW MM2, MM0 + db $0F, $71, $D2, $08 // PSRLW MM2, 8 + db $0F, $67, $D3 // PACKUSWB MM2, MM3 + db $0F, $7E, $D0 // MOVD EAX, MM2 + +@2: MOV [EDI], EAX + +@3: ADD ESI, 4 + ADD EDI, 4 + + // loop end + DEC ECX + JNZ @1 + + POP EDI + POP ESI + +@4: RET + {$ENDIF CPU32} + {$IFDEF CPU64} + TODO + {$ENDIF CPU64} +end; + +procedure M_BlendLineEx(Src, Dst: PColor32; Count: Integer; M: TColor32); assembler; +asm + {$IFDEF CPU32} + // EAX <- Src + // EDX <- Dst + // ECX <- Count + + // test the counter for zero or negativity + TEST ECX, ECX + JS @4 + + PUSH ESI + PUSH EDI + PUSH EBX + + MOV ESI, EAX // ESI <- Src + MOV EDI, EDX // EDI <- Dst + MOV EDX, M // EDX <- Master Alpha + + // loop start +@1: MOV EAX, [ESI] + TEST EAX, $FF000000 + JZ @3 // complete transparency, proceed to next point + MOV EBX, EAX + SHR EBX, 24 + IMUL EBX, EDX + SHR EBX, 8 + JZ @3 // complete transparency, proceed to next point + + // blend + db $0F, $EF, $C0 // PXOR MM0, MM0 + db $0F, $6E, $C8 // MOVD MM1, EAX + SHL EBX, 3 + db $0F, $6E, $17 // MOVD MM2, [EDI] + db $0F, $60, $C8 // PUNPCKLBW MM1, MM0 + db $0F, $60, $D0 // PUNPCKLBW MM2, MM0 + ADD EBX, alpha_ptr + db $0F, $F9, $CA // PSUBW MM1, MM2 + db $0F, $D5, $0B // PMULLW MM1, [EBX] + db $0F, $71, $F2, $08 // PSLLW MM2, 8 + MOV EBX, bias_ptr + db $0F, $FD, $13 // PADDW MM2, [EBX] + db $0F, $FD, $CA // PADDW MM1, MM2 + db $0F, $71, $D1, $08 // PSRLW MM1, 8 + db $0F, $67, $C8 // PACKUSWB MM1, MM0 + db $0F, $7E, $C8 // MOVD EAX, MM1 + +@2: MOV [EDI], EAX + +@3: ADD ESI, 4 + ADD EDI, 4 + + // loop end + DEC ECX + JNZ @1 + + POP EBX + POP EDI + POP ESI +@4: + {$ENDIF CPU32} + {$IFDEF CPU64} + TODO + {$ENDIF CPU64} +end; + +{ MMX Detection and linking } + +procedure SetupFunctions; +var + CpuInfo: TCpuInfo; +begin + //WIMDC + CpuInfo := CPUID; + MMX_ACTIVE := (CpuInfo.Features and MMX_FLAG) = MMX_FLAG; + if MMX_ACTIVE then + begin + // link MMX functions + CombineReg := M_CombineReg; + CombineMem := M_CombineMem; + BlendReg := M_BlendReg; + BlendMem := M_BlendMem; + BlendRegEx := M_BlendRegEx; + BlendMemEx := M_BlendMemEx; + BlendLine := M_BlendLine; + BlendLineEx := M_BlendLineEx; + end + else + begin + // link non-MMX functions + CombineReg := _CombineReg; + CombineMem := _CombineMem; + BlendReg := _BlendReg; + BlendMem := _BlendMem; + BlendRegEx := _BlendRegEx; + BlendMemEx := _BlendMemEx; + BlendLine := _BlendLine; + BlendLineEx := _BlendLineEx; + end; +end; + +//=== Dialog functions ======================================================= + +{$IFDEF MSWINDOWS} +function DialogUnitsToPixelsX(const DialogUnits: Word): Word; +begin + Result := (DialogUnits * LoWord(GetDialogBaseUnits)) div 4; +end; + +function DialogUnitsToPixelsY(const DialogUnits: Word): Word; +begin + Result := (DialogUnits * HiWord(GetDialogBaseUnits)) div 8; +end; + +function PixelsToDialogUnitsX(const PixelUnits: Word): Word; +begin + Result := PixelUnits * 4 div LoWord(GetDialogBaseUnits); +end; + +function PixelsToDialogUnitsY(const PixelUnits: Word): Word; +begin + Result := PixelUnits * 8 div HiWord(GetDialogBaseUnits); +end; +{$ENDIF MSWINDOWS} + +//=== Points ================================================================= + +function NullPoint: TPoint; +begin + Result.X := 0; + Result.Y := 0; +end; + +function PointAssign(const X, Y: Integer): TPoint; +begin + Result.X := X; + Result.Y := Y; +end; + +procedure PointCopy(var Dest: TPoint; const Source: TPoint); +begin + Dest.X := Source.X; + Dest.Y := Source.Y; +end; + +function PointEqual(const P1, P2: TPoint): Boolean; +begin + Result := (P1.X = P2.X) and (P1.Y = P2.Y); +end; + +function PointIsNull(const P: TPoint): Boolean; +begin + Result := (P.X = 0) and (P.Y = 0); +end; + +procedure PointMove(var P: TPoint; const DeltaX, DeltaY: Integer); +begin + P.X := P.X + DeltaX; + P.Y := P.Y + DeltaY; +end; + +//=== Rectangles ============================================================= + +function NullRect: TRect; +begin + with Result do + begin + Top := 0; + Left := 0; + Bottom := 0; + Right := 0; + end; +end; + +function RectAssign(const Left, Top, Right, Bottom: Integer): TRect; +begin + Result.Left := Left; + Result.Top := Top; + Result.Right := Right; + Result.Bottom := Bottom; +end; + +function RectAssignPoints(const TopLeft, BottomRight: TPoint): TRect; +begin + Result.TopLeft := TopLeft; + Result.BottomRight := BottomRight; +end; + +function RectBounds(const Left, Top, Width, Height: Integer): TRect; +begin + Result := RectAssign(Left, Top, Left + Width, Top + Height); +end; + +function RectCenter(const R: TRect): TPoint; +begin + Result.X := R.Left + (RectWidth(R) div 2); + Result.Y := R.Top + (RectHeight(R) div 2); +end; + +procedure RectCopy(var Dest: TRect; const Source: TRect); +begin + Dest := Source; +end; + +procedure RectFitToScreen(var R: TRect); +var + X, Y: Integer; + Delta: Integer; +begin + {$IFDEF MSWINDOWS} + X := GetSystemMetrics(SM_CXSCREEN); + Y := GetSystemMetrics(SM_CYSCREEN); + {$ELSE ~MSWINDOWS} + TODO: find a solution for other systems + {$ENDIF ~MSWINDOWS} + with R do + begin + if Right > X then + begin + Delta := Right - Left; + Right := X; + Left := Right - Delta; + end; + if Left < 0 then + begin + Delta := Right - Left; + Left := 0; + Right := Left + Delta; + end; + if Bottom > Y then + begin + Delta := Bottom - Top; + Bottom := Y; + Top := Bottom - Delta; + end; + if Top < 0 then + begin + Delta := Bottom - Top; + Top := 0; + Bottom := Top + Delta; + end; + end; +end; + +procedure RectGrow(var R: TRect; const Delta: Integer); +begin + with R do + begin + Dec(Left, Delta); + Dec(Top, Delta); + Inc(Right, Delta); + Inc(Bottom, Delta); + end; +end; + +procedure RectGrowX(var R: TRect; const Delta: Integer); +begin + with R do + begin + Dec(Left, Delta); + Inc(Right, Delta); + end; +end; + +procedure RectGrowY(var R: TRect; const Delta: Integer); +begin + with R do + begin + Dec(Top, Delta); + Inc(Bottom, Delta); + end; +end; + +function RectEqual(const R1, R2: TRect): Boolean; +begin + Result := (R1.Left = R2.Left) and (R1.Top = R2.Top) and + (R1.Right = R2.Right) and (R1.Bottom = R2.Bottom); +end; + +function RectHeight(const R: TRect): Integer; +begin + Result := Abs(R.Bottom - R.Top); +end; + +function RectIncludesPoint(const R: TRect; const Pt: TPoint): Boolean; +begin + Result := (Pt.X > R.Left) and (Pt.X < R.Right) and + (Pt.Y > R.Top) and (Pt.Y < R.Bottom); +end; + +function RectIncludesRect(const R1, R2: TRect): Boolean; +begin + Result := (R1.Left >= R2.Left) and (R1.Top >= R2.Top) and + (R1.Right <= R2.Right) and (R1.Bottom <= R2.Bottom); +end; + +function RectIntersection(const R1, R2: TRect): TRect; +begin + with Result do + begin + Left := JclLogic.Max(R1.Left, R2.Left); + Top := JclLogic.Max(R1.Top, R2.Top); + Right := JclLogic.Min(R1.Right, R2.Right); + Bottom := JclLogic.Min(R1.Bottom, R2.Bottom); + end; + if not RectIsValid(Result) then + Result := NullRect; +end; + +function RectIntersectRect(const R1, R2: TRect): Boolean; +begin + Result := not RectIsNull(RectIntersection(R1, R2)); +end; + +function RectIsEmpty(const R: TRect): Boolean; +begin + Result := (R.Right = R.Left) and (R.Bottom = R.Top); +end; + +function RectIsNull(const R: TRect): Boolean; +begin + with R do + Result := (Left = 0) and (Right = 0) and (Top = 0) and (Bottom = 0); +end; + +function RectIsSquare(const R: TRect): Boolean; +begin + Result := (RectHeight(R) = RectWidth(R)); +end; + +function RectIsValid(const R: TRect): Boolean; +begin + with R do + Result := (Left <= Right) and (Top <= Bottom); +end; + +procedure RectMove(var R: TRect; const DeltaX, DeltaY: Integer); +begin + with R do + begin + Inc(Left, DeltaX); + Inc(Right, DeltaX); + Inc(Top, DeltaY); + Inc(Bottom, DeltaY); + end; +end; + +procedure RectMoveTo(var R: TRect; const X, Y: Integer); +begin + with R do + begin + Right := (Right - Left) + X; + Bottom := (Bottom - Top) + Y; + Left := X; + Top := Y; + end; +end; + +procedure RectNormalize(var R: TRect); +var + Temp: Integer; +begin + if R.Left > R.Right then + begin + Temp := R.Left; + R.Left := R.Right; + R.Right := Temp; + end; + if R.Top > R.Bottom then + begin + Temp := R.Top; + R.Top := R.Bottom; + R.Bottom := Temp; + end; +end; + +function RectsAreValid(R: array of TRect): Boolean; +var + I: Integer; +begin + if Length(R) = 0 then + begin + Result := False; + Exit; + end; + for I := Low(R) to High(R) do + begin + with R[I] do + Result := (Left <= Right) and (Top <= Bottom); + if not Result then + Exit; + end; + Result := True; +end; + +function RectUnion(const R1, R2: TRect): TRect; +begin + with Result do + begin + Left := JclLogic.Min(R1.Left, R2.Left); + Top := JclLogic.Min(R1.Top, R2.Top); + Right := JclLogic.Max(R1.Right, R2.Right); + Bottom := JclLogic.Max(R1.Bottom, R2.Bottom); + end; + if not RectIsValid(Result) then + Result := NullRect; +end; + +function RectWidth(const R: TRect): Integer; +begin + Result := Abs(R.Right - R.Left); +end; + +//=== Color ================================================================== + +const + MaxBytePercent = High(Byte) * 0.01; + +procedure GetRGBValue(const Color: TColor; out Red, Green, Blue: Byte); +var + Temp: TColorRec; +begin + Temp.Value := ColorToRGB(Color); + Red := Temp.R; + Green := Temp.G; + Blue := Temp.B; +end; + +function SetRGBValue(const Red, Green, Blue: Byte): TColor; +begin + TColorRec(Result).Red := Red; + TColorRec(Result).Green := Green; + TColorRec(Result).Blue := Blue; + TColorRec(Result).Flag := 0; +end; + +function SetColorFlag(const Color: TColor; const Flag: Byte): TColor; +begin + Result := Color; + TColorRec(Result).Flag := Flag; +end; + +function GetColorFlag(const Color: TColor): Byte; +begin + Result := TColorRec(Color).Flag; +end; + +function SetColorRed(const Color: TColor; const Red: Byte): TColor; +begin + Result := ColorToRGB(Color); + TColorRec(Result).Red := Red; +end; + +function GetColorRed(const Color: TColor): Byte; +var + Temp: TColorRec; +begin + Temp.Value := ColorToRGB(Color); + Result := Temp.Red; +end; + +function SetColorGreen(const Color: TColor; const Green: Byte): TColor; +begin + Result := ColorToRGB(Color); + TColorRec(Result).Green := Green; +end; + +function GetColorGreen(const Color: TColor): Byte; +var + Temp: TColorRec; +begin + Temp.Value := ColorToRGB(Color); + Result := Temp.Green; +end; + +function SetColorBlue(const Color: TColor; const Blue: Byte): TColor; +begin + Result := ColorToRGB(Color); + TColorRec(Result).Blue := Blue; +end; + +function GetColorBlue(const Color: TColor): Byte; +var + Temp: TColorRec; +begin + Temp.Value := ColorToRGB(Color); + Result := Temp.Blue; +end; + +function BrightColor(const Color: TColor; const Pct: Single): TColor; +var + Temp: TColorRec; +begin + Temp.Value := ColorToRGB(Color); + Temp.R := BrightColorChannel(Temp.R, Pct); + Temp.G := BrightColorChannel(Temp.G, Pct); + Temp.B := BrightColorChannel(Temp.B, Pct); + Result := Temp.Value; +end; + +function BrightColorChannel(const Channel: Byte; const Pct: Single): Byte; +var + Temp: Integer; +begin + if Pct < 0 then + Result := DarkColorChannel(Channel, -Pct) + else + begin + Temp := Round(Channel + Pct * MaxBytePercent); + if Temp > High(Result) then + Result := High(Result) + else + Result := Temp; + end; +end; + +function DarkColor(const Color: TColor; const Pct: Single): TColor; +var + Temp: TColorRec; +begin + Temp.Value := ColorToRGB(Color); + Temp.R := DarkColorChannel(Temp.R, Pct); + Temp.G := DarkColorChannel(Temp.G, Pct); + Temp.B := DarkColorChannel(Temp.B, Pct); + Result := Temp.Value; +end; + +function DarkColorChannel(const Channel: Byte; const Pct: Single): Byte; +var + Temp: Integer; +begin + if Pct < 0 then + Result := BrightColorChannel(Channel, -Pct) + else + begin + Temp := Round(Channel - Pct * MaxBytePercent); + if Temp < Low(Result) then + Result := Low(Result) + else + Result := Temp; + end; +end; + +// Converts values of the XYZ color space using the D65 white point to D50 white point. +// The values were taken from www.srgb.com/hpsrgbprof/sld005.htm + +procedure CIED65ToCIED50(var X, Y, Z: Extended); +var + Xn, Yn, Zn: Extended; +begin + Xn := 1.0479 * X + 0.0299 * Y - 0.0502 * Z; + Yn := 0.0296 * X + 0.9904 * Y - 0.0171 * Z; + Zn := -0.0092 * X + 0.0151 * Y + 0.7519 * Z; + X := Xn; + Y := Yn; + Z := Zn; +end; + +// converts each color component from a 16bits per sample to 8 bit used in Windows DIBs +// Count is the number of entries in Source and Target + +procedure Gray16(const Source, Target: Pointer; Count: Cardinal); +var + SourceRun: PWord; + TargetRun: PByte; +begin + SourceRun := Source; + TargetRun := Target; + while Count > 0 do + begin + TargetRun^ := SourceRun^ shr 8; + Inc(SourceRun); + Inc(TargetRun); + Dec(Count); + end; +end; + +type + PCMYK = ^TCMYK; + TCMYK = packed record + C: Byte; + M: Byte; + Y: Byte; + K: Byte; + end; + + PCMYK16 = ^TCMYK16; + TCMYK16 = packed record + C: Word; + M: Word; + Y: Word; + K: Word; + end; + +// converts a stream of Count CMYK values to BGR +// BitsPerSample : 8 or 16 +// CMYK is C,M,Y,K 4 byte record or 4 word record +// Target is always 3 byte record B, R, G + +procedure CMYKToBGR(const Source, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +var + R, G, B, K: Integer; + I: Integer; + SourcePtr: PCMYK; + SourcePtr16: PCMYK16; + TargetPtr: PByte; +begin + case BitsPerSample of + 8: + begin + SourcePtr := Source; + TargetPtr := Target; + Count := Count div 4; + for I := 0 to Count - 1 do + begin + K := SourcePtr.K; + R := 255 - (SourcePtr.C - MulDiv(SourcePtr.C, K, 255) + K); + G := 255 - (SourcePtr.M - MulDiv(SourcePtr.M, K, 255) + K); + B := 255 - (SourcePtr.Y - MulDiv(SourcePtr.Y, K, 255) + K); + TargetPtr^ := Max(0, Min(255, Byte(B))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(G))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(R))); + Inc(TargetPtr); + Inc(SourcePtr); + end; + end; + 16: + begin + SourcePtr16 := Source; + TargetPtr := Target; + Count := Count div 4; + for I := 0 to Count - 1 do + begin + K := SourcePtr16.K; + R := 255 - (SourcePtr16.C - MulDiv(SourcePtr16.C, K, 65535) + K) shr 8; + G := 255 - (SourcePtr16.M - MulDiv(SourcePtr16.M, K, 65535) + K) shr 8; + B := 255 - (SourcePtr16.Y - MulDiv(SourcePtr16.Y, K, 65535) + K) shr 8; + TargetPtr^ := Max(0, Min(255, Byte(B))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(G))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(R))); + Inc(TargetPtr); + Inc(SourcePtr16); + end; + end; + else + raise EColorConversionError.CreateResFmt(@RsBitsPerSampleNotSupported, [BitsPerSample]); + end; +end; + +// converts a stream of Count CMYK values to BGR + +procedure CMYKToBGR(const C, M, Y, K, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +var + R, G, B: Integer; + C8, M8, Y8, K8: PByte; + C16, M16, Y16, K16: PWord; + I: Integer; + TargetPtr: PByte; +begin + case BitsPerSample of + 8: + begin + C8 := C; + M8 := M; + Y8 := Y; + K8 := K; + TargetPtr := Target; + Count := Count div 4; + for I := 0 to Count - 1 do + begin + R := 255 - (C8^ - MulDiv(C8^, K8^, 255) + K8^); + G := 255 - (M8^ - MulDiv(M8^, K8^, 255) + K8^); + B := 255 - (Y8^ - MulDiv(Y8^, K8^, 255) + K8^); + TargetPtr^ := Max(0, Min(255, Byte(B))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(G))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(R))); + Inc(TargetPtr); + Inc(C8); + Inc(M8); + Inc(Y8); + Inc(K8); + end; + end; + 16: + begin + C16 := C; + M16 := M; + Y16 := Y; + K16 := K; + TargetPtr := Target; + Count := Count div 4; + for I := 0 to Count - 1 do + begin + R := 255 - (C16^ - MulDiv(C16^, K16^, 65535) + K16^) shr 8; + G := 255 - (M16^ - MulDiv(M16^, K16^, 65535) + K16^) shr 8; + B := 255 - (Y16^ - MulDiv(Y16^, K16^, 65535) + K16^) shr 8; + TargetPtr^ := Max(0, Min(255, Byte(B))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(G))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(R))); + Inc(TargetPtr); + Inc(C16); + Inc(M16); + Inc(Y16); + Inc(K16); + end; + end; + else + raise EColorConversionError.CreateResFmt(@RsBitsPerSampleNotSupported, [BitsPerSample]); + end; +end; + +// conversion of the CIE L*a*b color space to RGB using a two way approach assuming a D65 white point, +// first a conversion to CIE XYZ is performed and then from there to RGB + +procedure CIELABToBGR(const Source, Target: Pointer; const Count: Cardinal); overload; +var + FinalR, + FinalG, + FinalB: Integer; + L, a, b, + X, Y, Z, // color values in float format + T, YYn3: Double; // intermediate results + SourcePtr, + TargetPtr: PByte; + PixelCount: Cardinal; +begin + SourcePtr := Source; + TargetPtr := Target; + PixelCount := Count div 3; + + while PixelCount > 0 do + begin + // L should be in the range of 0..100 but at least Photoshop stores the luminance + // in the range of 0..255 + L := SourcePtr^ / 2.55; + Inc(SourcePtr); + a := Shortint(SourcePtr^); + Inc(SourcePtr); + b := Shortint(SourcePtr^); + Inc(SourcePtr); + + // CIE L*a*b can be calculated from CIE XYZ by: + // L = 116 * ((Y / Yn)^1/3) - 16 if (Y / Yn) > 0.008856 + // L = 903.3 * Y / Yn if (Y / Yn) <= 0.008856 + // a = 500 * (f(X / Xn) - f(Y / Yn)) + // b = 200 * (f(Y / Yn) - f(Z / Zn)) + // where f(t) = t^(1/3) with (Y / Yn) > 0.008856 + // f(t) = 7.787 * t + 16 / 116 with (Y / Yn) <= 0.008856 + // + // by reordering the above equations we can calculate CIE L*a*b -> XYZ as follows: + // L is in the range 0..100 and a as well as b in -127..127 + YYn3 := (L + 16) / 116; // this corresponds to (Y/Yn)^1/3 + if L < 7.9996 then + begin + Y := L / 903.3; + X := a / 3893.5 + Y; + Z := Y - b / 1557.4; + end + else + begin + T := YYn3 + a / 500; + X := T * T * T; + Y := YYn3 * YYn3 * YYn3; + T := YYn3 - b / 200; + Z := T * T * T; + end; + + // once we have CIE XYZ it is easy (yet quite expensive) to calculate RGB values from this + FinalR := Round(255.0 * ( 2.998 * X - 1.458 * Y - 0.541 * Z)); + FinalG := Round(255.0 * (-0.952 * X + 1.893 * Y + 0.059 * Z)); + FinalB := Round(255.0 * ( 0.099 * X - 0.198 * Y + 1.099 * Z)); + + TargetPtr^ := Max(0, Min(255, Byte(FinalB))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(FinalG))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(FinalR))); + Inc(TargetPtr); + + Dec(PixelCount); + end; +end; + +// conversion of the CIE L*a*b color space to RGB using a two way approach assuming a D65 white point, +// first a conversion to CIE XYZ is performed and then from there to RGB +// The BitsPerSample are not used so why leave it here. + +procedure CIELABToBGR(LSource, aSource, bSource: PByte; const Target: Pointer; const Count: Cardinal); overload; +var + FinalR, + FinalG, + FinalB: Integer; + L, a, b, + X, Y, Z, // color values in float format + T, YYn3: Double; // intermediate results + TargetPtr: PByte; + PixelCount: Cardinal; +begin + TargetPtr := Target; + PixelCount := Count div 3; + + while PixelCount > 0 do + begin + // L should be in the range of 0..100 but at least Photoshop stores the luminance + // in the range of 0..256 + L := LSource^ / 2.55; + Inc(LSource); + a := Shortint(aSource^); + Inc(aSource); + b := Shortint(bSource^); + Inc(bSource); + + // CIE L*a*b can be calculated from CIE XYZ by: + // L = 116 * ((Y / Yn)^1/3) - 16 if (Y / Yn) > 0.008856 + // L = 903.3 * Y / Yn if (Y / Yn) <= 0.008856 + // a = 500 * (f(X / Xn) - f(Y / Yn)) + // b = 200 * (f(Y / Yn) - f(Z / Zn)) + // where f(t) = t^(1/3) with (Y / Yn) > 0.008856 + // f(t) = 7.787 * t + 16 / 116 with (Y / Yn) <= 0.008856 + // + // by reordering the above equations we can calculate CIE L*a*b -> XYZ as follows: + // L is in the range 0..100 and a as well as b in -127..127 + YYn3 := (L + 16) / 116; // this corresponds to (Y/Yn)^1/3 + if L < 7.9996 then + begin + Y := L / 903.3; + X := a / 3893.5 + Y; + Z := Y - b / 1557.4; + end + else + begin + T := YYn3 + a / 500; + X := T * T * T; + Y := YYn3 * YYn3 * YYn3; + T := YYn3 - b / 200; + Z := T * T * T; + end; + + // once we have CIE XYZ it is easy (yet quite expensive) to calculate RGB values from this + FinalR := Round(255.0 * ( 2.998 * X - 1.458 * Y - 0.541 * Z)); + FinalG := Round(255.0 * (-0.952 * X + 1.893 * Y + 0.059 * Z)); + FinalB := Round(255.0 * ( 0.099 * X - 0.198 * Y + 1.099 * Z)); + + TargetPtr^ := Max(0, Min(255, Byte(FinalB))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(FinalG))); + Inc(TargetPtr); + TargetPtr^ := Max(0, Min(255, Byte(FinalR))); + Inc(TargetPtr); + + Dec(PixelCount); + end; +end; + +// reorders a stream of "Count" RGB values to BGR, additionally an eventual sample size adjustment is done + +procedure RGBToBGR(const Source, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +var + SourceRun16: PRGBWord; + SourceRun8: PRGB; + TargetRun: PBGR; +begin + Count := Count div 3; + // usually only 8 bit samples are used but Photoshop allows for 16 bit samples + case BitsPerSample of + 8: + begin + SourceRun8 := Source; + TargetRun := Target; + while Count > 0 do + begin + TargetRun.R := SourceRun8.R; + TargetRun.G := SourceRun8.G; + TargetRun.B := SourceRun8.B; + Inc(SourceRun8); + Inc(TargetRun); + Dec(Count); + end; + end; + 16: + begin + SourceRun16 := Source; + TargetRun := Target; + while Count > 0 do + begin + TargetRun.R := SourceRun16.R shr 8; + TargetRun.G := SourceRun16.G shr 8; + TargetRun.B := SourceRun16.B shr 8; + Inc(SourceRun16); + Inc(TargetRun); + Dec(Count); + end; + end; + else + raise EColorConversionError.CreateResFmt(@RsBitsPerSampleNotSupported, [BitsPerSample]); + end; +end; + +// reorders a stream of "Count" RGB values to BGR, additionally an eventual sample size adjustment is done + +procedure RGBToBGR(const R, G, B, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload; +var + R8, G8, B8: PByte; + R16, G16, B16: PWord; + TargetRun: PByte; +begin + Count := Count div 3; + // usually only 8 bits samples are used but Photoshop allows 16 bits samples too + case BitsPerSample of + 8: + begin + R8 := R; + G8 := G; + B8 := B; + TargetRun := Target; + while Count > 0 do + begin + TargetRun^ := B8^; + Inc(B8); + Inc(TargetRun); + TargetRun^ := G8^; + Inc(G8); + Inc(TargetRun); + TargetRun^ := R8^; + Inc(R8); + Inc(TargetRun); + Dec(Count); + end; + end; + 16: + begin + R16 := R; + G16 := G; + B16 := B; + TargetRun := Target; + while Count > 0 do + begin + TargetRun^ := B16^ shr 8; + Inc(B16); + Inc(TargetRun); + TargetRun^ := G16^ shr 8; + Inc(G16); + Inc(TargetRun); + TargetRun^ := R16^ shr 8; + Inc(R16); + Inc(TargetRun); + Dec(Count); + end; + end; + else + raise EColorConversionError.CreateResFmt(@RsBitsPerSampleNotSupported, [BitsPerSample]); + end; +end; + +// reorders a stream of "Count" RGBA values to BGRA, additionally an eventual sample +// size adjustment is done + +procedure RGBAToBGRA(const Source, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); +var + SourceRun16: PRGBAWord; + SourceRun8: PRGBA; + TargetRun: PBGRA; +begin + Count := Count div 4; + // usually only 8 bit samples are used but Photoshop allows for 16 bit samples + case BitsPerSample of + 8: + begin + SourceRun8 := Source; + TargetRun := Target; + while Count > 0 do + begin + TargetRun.R := SourceRun8.R; + TargetRun.G := SourceRun8.G; + TargetRun.B := SourceRun8.B; + TargetRun.A := SourceRun8.A; + Inc(SourceRun8); + Inc(TargetRun); + Dec(Count); + end; + end; + 16: + begin + SourceRun16 := Source; + TargetRun := Target; + while Count > 0 do + begin + TargetRun.R := SourceRun16.B shr 8; + TargetRun.G := SourceRun16.G shr 8; + TargetRun.B := SourceRun16.R shr 8; + TargetRun.A := SourceRun16.A shr 8; + Inc(SourceRun16); + Inc(TargetRun); + Dec(Count); + end; + end; + else + raise EColorConversionError.CreateResFmt(@RsBitsPerSampleNotSupported, [BitsPerSample]); + end; +end; + +procedure WinColorToOpenGLColor(const Color: TColor; out Red, Green, Blue: Float); +var + Temp: TColorRec; +begin + Temp.Value := ColorToRGB(Color); + Red := (Temp.R / High(Temp.R)); + Green := (Temp.G / High(Temp.G)); + Blue := (Temp.B / High(Temp.B)); +end; + +function OpenGLColorToWinColor(const Red, Green, Blue: Float): TColor; +var + Temp: TColorRec; +begin + Temp.R := Round(Red * High(Temp.R)); + Temp.G := Round(Green * High(Temp.G)); + Temp.B := Round(Blue * High(Temp.B)); + Temp.Flag := 0; + Result := Temp.Value; +end; + +function Color32(WinColor: TColor): TColor32; overload; +begin + WinColor := ColorToRGB(WinColor); + Result := ColorSwap(WinColor); +end; + +function Color32(const R, G, B: Byte; const A: Byte): TColor32; overload; +begin + Result := A shl 24 + R shl 16 + G shl 8 + B; +end; + +function Color32(const Index: Byte; const Palette: TPalette32): TColor32; overload; +begin + Result := Palette[Index]; +end; + +function Gray32(const Intensity: Byte; const Alpha: Byte): TColor32; +begin + Result := TColor32(Alpha) shl 24 + TColor32(Intensity) shl 16 + + TColor32(Intensity) shl 8 + TColor32(Intensity); +end; + +function WinColor(const Color32: TColor32): TColor; +begin + // the alpha channel byte is set to zero + Result := (Color32 and _R shr 16) or (Color32 and _G) or + (Color32 and _B shl 16); +end; + +function RedComponent(const Color32: TColor32): Integer; +begin + Result := Color32 and _R shr 16; +end; + +function GreenComponent(const Color32: TColor32): Integer; +begin + Result := Color32 and _G shr 8; +end; + +function BlueComponent(const Color32: TColor32): Integer; +begin + Result := Color32 and _B; +end; + +function AlphaComponent(const Color32: TColor32): Integer; +begin + Result := Color32 shr 24; +end; + +function Intensity(const R, G, B: Single): Single; +const + RFactor = 61 / 256; + GFactor = 174 / 256; + BFactor = 21 / 256; +begin + Result := RFactor * R + GFactor * G + BFactor * B; +end; + +// input: RGB components +// output: (R * 61 + G * 174 + B * 21) div 256 + +function Intensity(const Color32: TColor32): Integer; +begin + Result := (Color32 and _B) * 21 // Blue + + ((Color32 and _G) shr 8) * 174 // Green + + ((Color32 and _R) shr 16) * 61; // Red + Result := Result shr 8; +end; + +function SetAlpha(const Color32: TColor32; NewAlpha: Integer): TColor32; +begin + Result := (Color32 and _RGB) or (TColor32(NewAlpha) shl 24); +end; + +procedure HLSToRGB(const H, L, S: Single; out R, G, B: Single); +var + M1, M2: Single; + + function HueToColorValue(Hue: Single): Single; + begin + Hue := Hue - Floor(Hue); + + if 6 * Hue < 1 then + Result := M1 + (M2 - M1) * Hue * 6 + else + if 2 * Hue < 1 then + Result := M2 + else + if 3 * Hue < 2 then + Result := M1 + (M2 - M1) * (2 / 3 - Hue) * 6 + else + Result := M1; + end; + +begin + if S = 0 then + begin + R := L; + G := R; + B := R; + end + else + begin + if L <= 0.5 then + M2 := L * (1 + S) + else + M2 := L + S - L * S; + M1 := 2 * L - M2; + R := HueToColorValue(H + 1 / 3); + G := HueToColorValue(H); + B := HueToColorValue(H - 1 / 3) + end; +end; + +function HSLToRGB(const H, S, L: Single): TColor32; +var + R, G, B: Single; +begin + HLSToRGB(H, L, S, R, G, B); + Result := Color32(Round(R * 255), Round(G * 255), Round(B * 255), 255); +end; + +function HLSToRGB(const HLS: TColorVector): TColorVector; +begin + HLSToRGB(HLS.H, HLS.L, HLS.S, Result.R, Result.G, Result.B); +end; + +procedure RGBToHLS(const R, G, B: Single; out H, L, S: Single); +var + D, Cmax, Cmin: Single; +begin + Cmax := Max(R, Max(G, B)); + Cmin := Min(R, Min(G, B)); + L := (Cmax + Cmin) / 2; + + if Cmax = Cmin then + begin + H := 0; + S := 0 + end + else + begin + D := Cmax - Cmin; + if L < 0.5 then + S := D / (Cmax + Cmin) + else + S := D / (2 - Cmax - Cmin); + if R = Cmax then + H := (G - B) / D + else + if G = Cmax then + H := 2 + (B - R) / D + else + H := 4 + (R - G) / D; + H := H / 6; + if H < 0 then + H := H + 1; + end; +end; + +procedure RGBToHSL(const RGB: TColor32; out H, S, L: Single); +begin + RGBToHLS(RedComponent(RGB) / 255, GreenComponent(RGB) / 255, BlueComponent(RGB) / 255, H, L, S); +end; + +function RGBToHLS(const RGB: TColorVector): TColorVector; +begin + RGBToHLS(RGB.R, RGB.G, RGB.B, Result.H, Result.L, Result.S); +end; + +{ Translated C-code from Microsoft Knowledge Base +------------------------------------------- +Converting Colors Between RGB and HLS (HBS) +Article ID: Q29240 +Creation Date: 26-APR... [truncated message content] |
From: <ou...@us...> - 2010-12-14 06:32:33
|
Revision: 3434 http://jcl.svn.sourceforge.net/jcl/?rev=3434&view=rev Author: outchy Date: 2010-12-14 06:32:27 +0000 (Tue, 14 Dec 2010) Log Message: ----------- windowsonly.inc should not be expanded while JclWin32 is processed. Modified Paths: -------------- trunk/jcl/source/prototypes/Makefile.mak Modified: trunk/jcl/source/prototypes/Makefile.mak =================================================================== --- trunk/jcl/source/prototypes/Makefile.mak 2010-12-14 06:31:03 UTC (rev 3433) +++ trunk/jcl/source/prototypes/Makefile.mak 2010-12-14 06:32:27 UTC (rev 3434) @@ -62,7 +62,7 @@ ..\windows\JclWin32.pas: \ JclWin32.pas - $(jpp) -ijcl.inc $(WinOptions) $? + $(jpp) -ijcl.inc -iwindowsonly.inc $(WinOptions) $? JclAlgorithms.pas: \ containers\JclAlgorithms.int containers\JclAlgorithms.imp This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-14 06:31:09
|
Revision: 3433 http://jcl.svn.sourceforge.net/jcl/?rev=3433&view=rev Author: outchy Date: 2010-12-14 06:31:03 +0000 (Tue, 14 Dec 2010) Log Message: ----------- Propagation of revision 3391 to Hardlinks.pas template. Revision Links: -------------- http://jcl.svn.sourceforge.net/jcl/?rev=3391&view=rev Modified Paths: -------------- trunk/jcl/source/prototypes/Hardlinks.pas trunk/jcl/source/windows/Hardlinks.pas Modified: trunk/jcl/source/prototypes/Hardlinks.pas =================================================================== --- trunk/jcl/source/prototypes/Hardlinks.pas 2010-12-14 06:28:51 UTC (rev 3432) +++ trunk/jcl/source/prototypes/Hardlinks.pas 2010-12-14 06:31:03 UTC (rev 3433) @@ -166,21 +166,24 @@ unit Hardlinks; +{$IFDEF JCL} +{$I jcl.inc} +{$I windowsonly.inc} + +// ALL enabled by default for Project JEDI +{$DEFINE STDCALL} // Make functions STDCALL always +{$DEFINE RTDL} // Use runtime dynamic linking +{$DEFINE PREFERAPI} // Prefer the "real" Windows API on systems on which it exists + // If this is defined STDCALL is automatically needed and defined! +{$ENDIF JCL} + {$ALIGN ON} {$MINENUMSIZE 4} interface -{$IFDEF JCL // ALL enabled by default for Project JEDI } -{$I jcl.inc} - -{$DEFINE STDCALL // Make functions STDCALL always } -{$DEFINE RTDL // Use runtime dynamic linking } -{$DEFINE PREFERAPI // Prefer the "real" Windows API on systems on which it exists - // If this is defined STDCALL is automatically needed and defined! } - +{$IFDEF JCL} //DOM-IGNORE-BEGIN - {$ENDIF JCL} (* Modified: trunk/jcl/source/windows/Hardlinks.pas =================================================================== --- trunk/jcl/source/windows/Hardlinks.pas 2010-12-14 06:28:51 UTC (rev 3432) +++ trunk/jcl/source/windows/Hardlinks.pas 2010-12-14 06:31:03 UTC (rev 3433) @@ -50,6 +50,12 @@ {$I jcl.inc} {$I windowsonly.inc} +// ALL enabled by default for Project JEDI +{$DEFINE STDCALL} // Make functions STDCALL always +{$DEFINE RTDL} // Use runtime dynamic linking +{$DEFINE PREFERAPI} // Prefer the "real" Windows API on systems on which it exists + // If this is defined STDCALL is automatically needed and defined! + {$ALIGN ON} {$MINENUMSIZE 4} @@ -57,7 +63,6 @@ //DOM-IGNORE-BEGIN - (* All possible combinations of the above DEFINEs have been tested and work fine. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-14 06:28:58
|
Revision: 3432 http://jcl.svn.sourceforge.net/jcl/?rev=3432&view=rev Author: outchy Date: 2010-12-14 06:28:51 +0000 (Tue, 14 Dec 2010) Log Message: ----------- Added the capability of inheritance to preprocessor state items: inherited preprocessor states are able to push/pop data in customized state items. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppState.pas Modified: trunk/jcl/devtools/jpp/JppState.pas =================================================================== --- trunk/jcl/devtools/jpp/JppState.pas 2010-12-13 18:21:33 UTC (rev 3431) +++ trunk/jcl/devtools/jpp/JppState.pas 2010-12-14 06:28:51 UTC (rev 3432) @@ -63,6 +63,17 @@ TTriState = (ttUnknown, ttUndef, ttDefined); + TPppStateItem = class + public + DefinedKeywords: IJclStrMap; + ExcludedFiles: IJclStrList; + Macros: IJclStrIntfMap; + SearchPath: IJclStrList; + TriState: TTriState; + end; + + TPppStateItemClass = class of TPppStateItem; + TPppProvider = class(TPersistent) protected function GetBoolValue(const Name: string): Boolean; virtual; abstract; @@ -84,8 +95,6 @@ private FStateStack: IJclStack; FOptions: TPppOptions; - procedure InternalPushState(const ExcludedFiles, SearchPath: IJclStrList; - const Macros: IJclStrIntfMap; const Defines: IJclStrMap; ATriState: TTriState); function InternalPeekDefines: IJclStrMap; function InternalPeekExcludedFiles: IJclStrList; function InternalPeekMacros: IJclStrIntfMap; @@ -93,6 +102,10 @@ function InternalPeekTriState: TTriState; procedure InternalSetTriState(Value: TTriState); protected + class function StateItemClass: TPppStateItemClass; virtual; + procedure InternalPushState(FromStateItem, ToStateItem: TPppStateItem); virtual; + function PeekStateItem: TPppStateItem; + function GetOptions: TPppOptions; procedure SetOptions(AOptions: TPppOptions); @@ -112,6 +125,8 @@ constructor Create; destructor Destroy; override; + procedure AfterConstruction; override; + { PushState is called at the start of every unit, and PopState at the end. This means that any declarations like $DEFINE will be file-local in scope. } @@ -157,25 +172,12 @@ TypInfo, JclStrings, JclArrayLists, JclHashMaps, JclStacks; -type - TSimplePppStateItem = class - public - DefinedKeywords: IJclStrMap; - ExcludedFiles: IJclStrList; - Macros: IJclStrIntfMap; - SearchPath: IJclStrList; - TriState: TTriState; - ParentTriState: TTriState; - end; - //=== { TPppState } ========================================================== constructor TPppState.Create; begin inherited Create; FStateStack := TJclStack.Create(16, True); - InternalPushState(TJclStrArrayList.Create(16), TJclStrArrayList.Create(16), - TJclStrIntfHashMap.Create(16), TJclStrHashMap.Create(16, False), ttUnknown); end; destructor TPppState.Destroy; @@ -194,6 +196,15 @@ InternalPeekSearchPath.Add(AName); end; +procedure TPppState.AfterConstruction; +var + StateItem: TPppStateItem; +begin + StateItem := StateItemClass.Create; + InternalPushState(nil, StateItem); + FStateStack.Push(StateItem); +end; + function TPppState.AssociateParameters(const ParamNames: IJclStrList; const ParamValues: TDynStringArray): TDynWideStringArray; var @@ -400,66 +411,57 @@ function TPppState.InternalPeekDefines: IJclStrMap; begin - if FStateStack.Empty then - raise EPppState.Create('Internal error: PPP State stack is empty'); - Result := (FStateStack.Peek as TSimplePppStateItem).DefinedKeywords; + Result := PeekStateItem.DefinedKeywords; end; function TPppState.InternalPeekExcludedFiles: IJclStrList; begin - if FStateStack.Empty then - raise EPppState.Create('Internal error: PPP State stack is empty'); - Result := (FStateStack.Peek as TSimplePppStateItem).ExcludedFiles; + Result := PeekStateItem.ExcludedFiles; end; function TPppState.InternalPeekMacros: IJclStrIntfMap; begin - if FStateStack.Empty then - raise EPppState.Create('Internal error: PPP State stack is empty'); - Result := (FStateStack.Peek as TSimplePppStateItem).Macros; + Result := PeekStateItem.Macros; end; function TPppState.InternalPeekSearchPath: IJclStrList; begin - if FStateStack.Empty then - raise EPppState.Create('Internal error: PPP State stack is empty'); - Result := (FStateStack.Peek as TSimplePppStateItem).SearchPath; + Result := PeekStateItem.SearchPath; end; function TPppState.InternalPeekTriState: TTriState; begin - if FStateStack.Empty then - raise EPppState.Create('Internal error: PPP State stack is empty'); - Result := (FStateStack.Peek as TSimplePppStateItem).TriState; + Result := PeekStateItem.TriState; end; -procedure TPppState.InternalPushState(const ExcludedFiles, SearchPath: IJclStrList; - const Macros: IJclStrIntfMap; const Defines: IJclStrMap; ATriState: TTriState); -var - AStateItem: TSimplePppStateItem; +procedure TPppState.InternalPushState(FromStateItem, ToStateItem: TPppStateItem); begin - AStateItem := TSimplePppStateItem.Create; - AStateItem.ExcludedFiles := ExcludedFiles; - AStateItem.DefinedKeywords := Defines; - AStateItem.Macros := Macros; - AStateItem.SearchPath := SearchPath; - AStateItem.TriState := ATriState; - if FStateStack.Empty then - AStateItem.ParentTriState := ttUnknown + if Assigned(FromStateItem) then + begin + // clone + ToStateItem.DefinedKeywords := (FromStateItem.DefinedKeywords as IJclIntfCloneable).IntfClone as IJclStrMap; + ToStateItem.ExcludedFiles := (FromStateItem.ExcludedFiles as IJclIntfCloneable).IntfClone as IJclStrList; + ToStateItem.Macros := (FromStateItem.Macros as IJclIntfCloneable).IntfClone as IJclStrIntfMap; + ToStateItem.SearchPath := (FromStateItem.SearchPath as IJclIntfCloneable).IntfClone as IJclStrList; + ToStateItem.TriState := FromStateItem.TriState; + end else - AStateItem.ParentTriState := InternalPeekTriState; - FStateStack.Push(AStateItem); + begin + // create the first item + ToStateItem.DefinedKeywords := TJclStrHashMap.Create(16, False); + ToStateItem.ExcludedFiles := TJclStrArrayList.Create(16); + ToStateItem.Macros := TJclStrIntfHashMap.Create(16); + ToStateItem.SearchPath := TJclStrArrayList.Create(16); + ToStateItem.TriState := ttDefined; + end; end; procedure TPppState.InternalSetTriState(Value: TTriState); var - ASimplePppStateItem: TSimplePppStateItem; + APppStateItem: TPppStateItem; begin - if FStateStack.Empty then - raise EPppState.Create('Internal error: PPP State stack is empty'); - ASimplePppStateItem := FStateStack.Peek as TSimplePppStateItem; - if (ASimplePppStateItem.ParentTriState <> ttUndef) or (Value = ttUndef) then - ASimplePppStateItem.TriState := Value; + APppStateItem := PeekStateItem; + APppStateItem.TriState := Value; end; function TPppState.IsFileExcluded(const AName: string): Boolean; @@ -480,6 +482,13 @@ end; end; +function TPppState.PeekStateItem: TPppStateItem; +begin + if FStateStack.Empty then + raise EPppState.Create('Internal error: PPP State stack is empty'); + Result := FStateStack.Peek as TPppStateItem; +end; + procedure TPppState.PopState; begin if FStateStack.Size <= 1 then @@ -489,18 +498,12 @@ procedure TPppState.PushState; var - AExcludedFiles, ASearchPath: IJclStrList; - ADefines: IJclStrMap; - AMacros: IJclStrIntfMap; - ATriState: TTriState; + FromStateItem, ToStateItem: TPppStateItem; begin - ADefines := (InternalPeekDefines as IJclIntfCloneable).IntfClone as IJclStrMap; - AExcludedFiles := (InternalPeekExcludedFiles as IJclIntfCloneable).IntfClone as IJclStrList; - ASearchPath := (InternalPeekSearchPath as IJclIntfCloneable).IntfClone as IJclStrList; - AMacros := (InternalPeekMacros as IJclIntfCloneable).IntfClone as IJclStrIntfMap; - ATriState := InternalPeekTriState; - - InternalPushState(AExcludedFiles, ASearchPath, AMacros, ADefines, ATriState); + FromStateItem := PeekStateItem; + ToStateItem := StateItemClass.Create; + InternalPushState(FromStateItem, ToStateItem); + FStateStack.Push(ToStateItem); end; procedure TPppState.SetOptions(AOptions: TPppOptions); @@ -572,6 +575,11 @@ SetPropValue(Self, Name, VariantValue); end; +class function TPppState.StateItemClass: TPppStateItemClass; +begin + Result := TPppStateItem; +end; + procedure TPppState.Undef(const ASymbol: string); begin Defines[ASymbol] := ttUndef; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-13 18:21:40
|
Revision: 3431 http://jcl.svn.sourceforge.net/jcl/?rev=3431&view=rev Author: outchy Date: 2010-12-13 18:21:33 +0000 (Mon, 13 Dec 2010) Log Message: ----------- some refactoring to extract a common root for XML elements and properties. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2010-12-13 10:34:31 UTC (rev 3430) +++ trunk/jcl/source/common/JclSimpleXml.pas 2010-12-13 18:21:33 UTC (rev 3431) @@ -53,6 +53,43 @@ JclBase, JclStreams; type + TJclSimpleData = class(TObject) + private + FName: string; + FValue: string; + FData: Pointer; + protected + function GetBoolValue: Boolean; + procedure SetBoolValue(const Value: Boolean); + procedure SetName(const Value: string); virtual; + function GetFloatValue: Extended; + procedure SetFloatValue(const Value: Extended); + function GetAnsiValue: AnsiString; + procedure SetAnsiValue(const Value: AnsiString); + function GetIntValue: Int64; + procedure SetIntValue(const Value: Int64); + public + constructor Create(const AName: string); + property Name: string read FName write SetName; + property Value: string read FValue write FValue; + property AnsiValue: AnsiString read GetAnsiValue write SetAnsiValue; + property IntValue: Int64 read GetIntValue write SetIntValue; + property BoolValue: Boolean read GetBoolValue write SetBoolValue; + property FloatValue: Extended read GetFloatValue write SetFloatValue; + + property Data: Pointer read FData write FData; + end; + +type + TJclSimpleXMLData = class(TJclSimpleData) + private + FNameSpace: string; + public + function FullName:string; + property NameSpace: string read FNameSpace write FNameSpace; + end; + +type TJclSimpleXML = class; EJclSimpleXMLError = class(EJclError); {$TYPEINFO ON} // generate RTTI for published properties @@ -92,37 +129,15 @@ hkDirect: (FirstElem: PJclHashElem); end; - TJclSimpleXMLProp = class(TObject) + TJclSimpleXMLProp = class(TJclSimpleXMLData) private - FName: string; - FValue: string; FParent: TJclSimpleXMLProps; - FNameSpace: string; - FData: Pointer; - function GetBoolValue: Boolean; - procedure SetBoolValue(const Value: Boolean); - procedure SetName(const Value: string); - function GetFloatValue: Extended; - procedure SetFloatValue(const Value: Extended); - function GetAnsiValue: AnsiString; - procedure SetAnsiValue(const Value: AnsiString); protected - function GetIntValue: Int64; - procedure SetIntValue(const Value: Int64); + procedure SetName(const Value: string); override; public function GetSimpleXML: TJclSimpleXML; procedure SaveToStringStream(StringStream: TJclStringStream); - function FullName:string; property Parent: TJclSimpleXMLProps read FParent write FParent; - property Name: string read FName write SetName; - property Value: string read FValue write FValue; - property AnsiValue: AnsiString read GetAnsiValue write SetAnsiValue; - property IntValue: Int64 read GetIntValue write SetIntValue; - property BoolValue: Boolean read GetBoolValue write SetBoolValue; - property FloatValue: Extended read GetFloatValue write SetFloatValue; - property NameSpace: string read FNameSpace write FNameSpace; - - property Data: Pointer read FData write FData; end; TJclSimpleXMLProps = class(TObject) @@ -295,35 +310,23 @@ end; {$TYPEINFO ON} - TJclSimpleXMLElem = class(TObject) + TJclSimpleXMLElem = class(TJclSimpleXmlData) private - FName: string; FParent: TJclSimpleXMLElem; FItems: TJclSimpleXMLElems; FProps: TJclSimpleXMLProps; - FValue: string; - FNameSpace: string; - FData: Pointer; FSimpleXML: TJclSimpleXML; FContainer: TJclSimpleXMLElems; - function GetFloatValue: Extended; - procedure SetFloatValue(const Value: Extended); - function GetAnsiValue: AnsiString; - procedure SetAnsiValue(const Value: AnsiString); protected function GetSimpleXML: TJclSimpleXML; - function GetIntValue: Int64; - function GetBoolValue: Boolean; function GetChildsCount: Integer; function GetProps: TJclSimpleXMLProps; - procedure SetBoolValue(const Value: Boolean); - procedure SetName(const Value: string); - procedure SetIntValue(const Value: Int64); + procedure SetName(const Value: string); override; function GetItems: TJclSimpleXMLElems; procedure Error(const S: string); procedure FmtError(const S: string; const Args: array of const); public - constructor Create(const AOwner: TJclSimpleXMLElem); virtual; + constructor Create(const AOwner: TJclSimpleXMLElem; const AName: string = ''); destructor Destroy; override; procedure Assign(Value: TJclSimpleXMLElem); virtual; procedure Clear; virtual; @@ -333,25 +336,16 @@ procedure LoadFromString(const Value: string); function SaveToString: string; procedure GetBinaryValue(Stream: TStream); - property Data: Pointer read FData write FData; function GetChildIndex(const AChild: TJclSimpleXMLElem): Integer; function GetNamedIndex(const AChild: TJclSimpleXMLElem): Integer; property SimpleXML: TJclSimpleXML read GetSimpleXML; property Container: TJclSimpleXMLElems read FContainer write FContainer; published - function FullName: string;virtual; - property Name: string read FName write SetName; property Parent: TJclSimpleXMLElem read FParent write FParent; - property NameSpace: string read FNameSpace write FNameSpace; property ChildsCount: Integer read GetChildsCount; property Items: TJclSimpleXMLElems read GetItems; property Properties: TJclSimpleXMLProps read GetProps; - property IntValue: Int64 read GetIntValue write SetIntValue; - property BoolValue: Boolean read GetBoolValue write SetBoolValue; - property FloatValue: Extended read GetFloatValue write SetFloatValue; - property Value: string read FValue write FValue; - property AnsiValue: AnsiString read GetAnsiValue write SetAnsiValue; end; {$IFNDEF TYPEINFO_ON} {$TYPEINFO OFF} @@ -881,6 +875,71 @@ SimpleXMLDecode(Result, False); end; +//=== { TJclSimpleData } ===================================================== + +constructor TJclSimpleData.Create(const AName: string); +begin + inherited Create; + FName := AName; +end; + +function TJclSimpleData.GetAnsiValue: AnsiString; +begin + Result := AnsiString(Value); +end; + +function TJclSimpleData.GetBoolValue: Boolean; +begin + Result := StrToBoolDef(Value, False); +end; + +function TJclSimpleData.GetFloatValue: Extended; +begin + Result := 0.0; + if not TryStrToFloat(Value, Result) then + Result := 0.0; +end; + +function TJclSimpleData.GetIntValue: Int64; +begin + Result := StrToInt64Def(Value, -1); +end; + +procedure TJclSimpleData.SetAnsiValue(const Value: AnsiString); +begin + Self.Value := string(Value); +end; + +procedure TJclSimpleData.SetBoolValue(const Value: Boolean); +begin + FValue := BoolToStr(Value); +end; + +procedure TJclSimpleData.SetFloatValue(const Value: Extended); +begin + FValue := FloatToStr(Value); +end; + +procedure TJclSimpleData.SetIntValue(const Value: Int64); +begin + FValue := IntToStr(Value); +end; + +procedure TJclSimpleData.SetName(const Value: string); +begin + FName := Value; +end; + +//=== { TJclSimpleXMLData } ================================================== + +function TJclSimpleXMLData.FullName: string; +begin + if NameSpace <> '' then + Result := NameSpace + ':' + Name + else + Result := Name; +end; + //=== { TJclSimpleXML } ====================================================== constructor TJclSimpleXML.Create; @@ -1218,7 +1277,7 @@ procedure TJclSimpleXMLElem.Assign(Value: TJclSimpleXMLElem); var Elems: TJclSimpleXMLElem; - Elem: TJclSimpleXMLElem; + SrcElem, DestElem: TJclSimpleXMLElem; I: Integer; begin Clear; @@ -1234,9 +1293,10 @@ begin // Create from the class type, so that the virtual constructor is called // creating an element of the correct class type. - Elem := TJclSimpleXMLElemClass(Elems.Items[I].ClassType).Create(Self); - Elem.Assign(Elems.Items[I]); - Items.Add(Elem); + SrcElem := Elems.Items[I]; + DestElem := TJclSimpleXMLElemClass(SrcElem.ClassType).Create(Self, SrcElem.Name); + DestElem.Assign(SrcElem); + Items.Add(DestElem); end; end; @@ -1248,10 +1308,9 @@ FProps.Clear; end; -constructor TJclSimpleXMLElem.Create(const AOwner: TJclSimpleXMLElem); +constructor TJclSimpleXMLElem.Create(const AOwner: TJclSimpleXMLElem; const AName: string); begin - inherited Create; - FName := ''; + inherited Create(AName); FParent := TJclSimpleXMLElem(AOwner); if Assigned(FParent) then FSimpleXML := FParent.FSimpleXML; @@ -1278,19 +1337,6 @@ Error(Format(S, Args)); end; -function TJclSimpleXMLElem.FullName: string; -begin - if FNameSpace <> '' then - Result := FNameSpace + ':' + Name - else - Result := Name; -end; - -function TJclSimpleXMLElem.GetAnsiValue: AnsiString; -begin - Result := AnsiString(Value); -end; - procedure TJclSimpleXMLElem.GetBinaryValue(Stream: TStream); var I, J, ValueLength, RequiredStreamSize: Integer; @@ -1367,11 +1413,6 @@ Stream.Write(Buf, J); end; -function TJclSimpleXMLElem.GetBoolValue: Boolean; -begin - Result := StrToBoolDef(Value, False); -end; - function TJclSimpleXMLElem.GetChildIndex( const AChild: TJclSimpleXMLElem): Integer; begin @@ -1391,18 +1432,6 @@ Result := Result + FItems[I].ChildsCount; end; -function TJclSimpleXMLElem.GetFloatValue: Extended; -begin - Result := 0.0; - if not TryStrToFloat(Value, Result) then - Result := 0.0; -end; - -function TJclSimpleXMLElem.GetIntValue: Int64; -begin - Result := StrToInt64Def(Value, -1); -end; - function TJclSimpleXMLElem.GetItems: TJclSimpleXMLElems; begin if FItems = nil then @@ -1468,33 +1497,13 @@ end; end; -procedure TJclSimpleXMLElem.SetAnsiValue(const Value: AnsiString); -begin - Self.Value := string(Value); -end; - -procedure TJclSimpleXMLElem.SetBoolValue(const Value: Boolean); -begin - FValue := BoolToStr(Value); -end; - -procedure TJclSimpleXMLElem.SetFloatValue(const Value: Extended); -begin - FValue := FloatToStr(Value); -end; - -procedure TJclSimpleXMLElem.SetIntValue(const Value: Int64); -begin - FValue := IntToStr(Value); -end; - procedure TJclSimpleXMLElem.SetName(const Value: string); begin - if (Value <> FName) and (Value <> '') then + if (Value <> Name) and (Value <> '') then begin - if (Parent <> nil) and (FName <> '') then + if (Parent <> nil) and (Name <> '') then Parent.Items.DoItemRename(Self, Value); - FName := Value; + inherited SetName(Value); end; end; @@ -1635,23 +1644,20 @@ function TJclSimpleXMLElems.Add(const Name: string): TJclSimpleXMLElemClassic; begin - Result := TJclSimpleXMLElemClassic.Create(Parent); - Result.FName := Name; //Directly set parent to avoid notification + Result := TJclSimpleXMLElemClassic.Create(Parent, Name); AddChild(Result); end; function TJclSimpleXMLElems.Add(const Name, Value: string): TJclSimpleXMLElemClassic; begin - Result := TJclSimpleXMLElemClassic.Create(Parent); - Result.FName := Name; + Result := TJclSimpleXMLElemClassic.Create(Parent, Name); Result.Value := Value; AddChild(Result); end; function TJclSimpleXMLElems.Add(const Name: string; const Value: Int64): TJclSimpleXMLElemClassic; begin - Result := TJclSimpleXMLElemClassic.Create(Parent); - Result.FName := Name; + Result := TJclSimpleXMLElemClassic.Create(Parent, Name); Result.Value := IntToStr(Value); AddChild(Result); end; @@ -1666,8 +1672,7 @@ function TJclSimpleXMLElems.Add(const Name: string; const Value: Boolean): TJclSimpleXMLElemClassic; begin - Result := TJclSimpleXMLElemClassic.Create(Parent); - Result.FName := Name; + Result := TJclSimpleXMLElemClassic.Create(Parent, Name); Result.Value := BoolToStr(Value); AddChild(Result); end; @@ -1689,8 +1694,7 @@ St := St + IntToHex(Buf[I], 2); Stream.WriteString(St); until Count = 0; - Result := TJclSimpleXMLElemClassic.Create(Parent); - Result.FName := Name; + Result := TJclSimpleXMLElemClassic.Create(Parent, Name); Result.Value := Stream.DataString; AddChild(Result); finally @@ -1750,8 +1754,7 @@ function TJclSimpleXMLElems.AddFirst(const Name: string): TJclSimpleXMLElemClassic; begin - Result := TJclSimpleXMLElemClassic.Create(Parent); - Result.FName := Name; //Directly set parent to avoid notification + Result := TJclSimpleXMLElemClassic.Create(Parent, Name); AddChildFirst(Result); end; @@ -1765,24 +1768,21 @@ function TJclSimpleXMLElems.AddComment(const Name, Value: string): TJclSimpleXMLElemComment; begin - Result := TJclSimpleXMLElemComment.Create(Parent); - Result.FName := Name; + Result := TJclSimpleXMLElemComment.Create(Parent, Name); Result.Value := Value; AddChild(Result); end; function TJclSimpleXMLElems.AddCData(const Name, Value: string): TJclSimpleXMLElemCData; begin - Result := TJclSimpleXMLElemCData.Create(Parent); - Result.FName := Name; + Result := TJclSimpleXMLElemCData.Create(Parent, Name); Result.Value := Value; AddChild(Result); end; function TJclSimpleXMLElems.AddText(const Name, Value: string): TJclSimpleXMLElemText; begin - Result := TJclSimpleXMLElemText.Create(Parent); - Result.FName := Name; + Result := TJclSimpleXMLElemText.Create(Parent, Name); Result.Value := Value; AddChild(Result); end; @@ -2216,8 +2216,7 @@ function TJclSimpleXMLElems.Insert(const Name: string; Index: Integer): TJclSimpleXMLElemClassic; begin - Result := TJclSimpleXMLElemClassic.Create(Parent); - Result.FName := Name; //Directly set parent to avoid notification + Result := TJclSimpleXMLElemClassic.Create(Parent, Name); InsertChild(Result, Index); end; @@ -2259,9 +2258,8 @@ begin if FProperties = nil then FProperties := THashedStringList.Create; - Elem := TJclSimpleXMLProp.Create(); + Elem := TJclSimpleXMLProp.Create(Name); FProperties.AddObject(Name, Elem); - Elem.FName := Name; //Avoid notification Elem.Value := Value; Elem.Parent := Self; Result := Elem; @@ -2291,9 +2289,8 @@ begin if FProperties = nil then FProperties := THashedStringList.Create; - Elem := TJclSimpleXMLProp.Create(); + Elem := TJclSimpleXMLProp.Create(Name); FProperties.InsertObject(Index, Name, Elem); - Elem.FName := Name; //Avoid notification Elem.Value := Value; Elem.Parent := Self; Result := Elem; @@ -2605,36 +2602,6 @@ //=== { TJclSimpleXMLProp } ================================================== -function TJclSimpleXMLProp.GetAnsiValue: AnsiString; -begin - Result := AnsiString(Value); -end; - -function TJclSimpleXMLProp.GetBoolValue: Boolean; -begin - Result := StrToBoolDef(Value, False); -end; - -function TJclSimpleXMLProp.GetFloatValue: Extended; -begin - Result := 0.0; - if not TryStrToFloat(Value, Result) then - Result := 0.0; -end; - -function TJclSimpleXMLProp.FullName: string; -begin - if FNameSpace <> '' then - Result := FNameSpace + ':' + Name - else - Result := Name; -end; - -function TJclSimpleXMLProp.GetIntValue: Int64; -begin - Result := StrToInt64Def(Value, -1); -end; - function TJclSimpleXMLProp.GetSimpleXML: TJclSimpleXML; begin if (FParent <> nil) and (FParent.FParent <> nil) then @@ -2646,10 +2613,10 @@ procedure TJclSimpleXMLProp.SaveToStringStream(StringStream: TJclStringStream); var AEncoder: TJclSimpleXML; - Tmp:string; + Tmp: string; begin AEncoder := GetSimpleXML; - Tmp := FValue; + Tmp := Value; if AEncoder <> nil then AEncoder.DoEncodeValue(Tmp); if NameSpace <> '' then @@ -2659,33 +2626,13 @@ StringStream.WriteString(Tmp, 1, Length(Tmp)); end; -procedure TJclSimpleXMLProp.SetAnsiValue(const Value: AnsiString); -begin - Self.Value := string(Value); -end; - -procedure TJclSimpleXMLProp.SetBoolValue(const Value: Boolean); -begin - FValue := BoolToStr(Value); -end; - -procedure TJclSimpleXMLProp.SetFloatValue(const Value: Extended); -begin - FValue := FloatToStr(Value); -end; - -procedure TJclSimpleXMLProp.SetIntValue(const Value: Int64); -begin - FValue := IntToStr(Value); -end; - procedure TJclSimpleXMLProp.SetName(const Value: string); begin - if (Value <> FName) and (Value <> '') then + if (Value <> Name) and (Value <> '') then begin - if (Parent <> nil) and (FName <> '') then + if (Parent <> nil) and (Name <> '') then Parent.DoItemRename(Self, Value); - FName := Value; + inherited SetName(Value); end; end; @@ -2866,7 +2813,7 @@ if (Items.Count = 0) then begin - tmp := FValue; + tmp := Value; if (Name <> '') then begin if Value = '' then @@ -3862,8 +3809,7 @@ begin // make sure there is an xml header FindHeader; - Result := TJclSimpleXMLElemSheet.Create(nil); - Result.Name := 'xml-stylesheet'; + Result := TJclSimpleXMLElemSheet.Create(nil, 'xml-stylesheet'); Result.Properties.Add('type',AType); Result.Properties.Add('href',AHRef); FElems.AddObject('xml-stylesheet', Result); @@ -3873,8 +3819,7 @@ begin // make sure there is an xml header FindHeader; - Result := TJclSimpleXMLElemMSOApplication.Create(nil); - Result.Name := 'mso-application'; + Result := TJclSimpleXMLElemMSOApplication.Create(nil, 'mso-application'); Result.Properties.Add('progid',AProgId); FElems.AddObject('mso-application', Result); end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-13 10:34:38
|
Revision: 3430 http://jcl.svn.sourceforge.net/jcl/?rev=3430&view=rev Author: outchy Date: 2010-12-13 10:34:31 +0000 (Mon, 13 Dec 2010) Log Message: ----------- Mantis 5438: jclBufferedStream - WriteToBuffer causing truncated file after backward seek. Modified Paths: -------------- trunk/jcl/source/common/JclStreams.pas Modified: trunk/jcl/source/common/JclStreams.pas =================================================================== --- trunk/jcl/source/common/JclStreams.pas 2010-12-13 10:30:10 UTC (rev 3429) +++ trunk/jcl/source/common/JclStreams.pas 2010-12-13 10:34:31 UTC (rev 3430) @@ -1342,7 +1342,8 @@ FBufferCurrentSize := BufPos + Result; P := @Buffer; Move(P[Start], FBuffer[BufPos], Result); - FBufferMaxModifiedPos := BufPos + Result; + if FBufferMaxModifiedPos < BufPos + Result then + FBufferMaxModifiedPos := BufPos + Result; Inc(FPosition, Result); end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-13 10:30:17
|
Revision: 3429 http://jcl.svn.sourceforge.net/jcl/?rev=3429&view=rev Author: outchy Date: 2010-12-13 10:30:10 +0000 (Mon, 13 Dec 2010) Log Message: ----------- Revision 3406 and 3408 shall be propagated to templates. Revision Links: -------------- http://jcl.svn.sourceforge.net/jcl/?rev=3406&view=rev Modified Paths: -------------- trunk/jcl/source/prototypes/_Graphics.pas trunk/jcl/source/vcl/JclGraphics.pas Modified: trunk/jcl/source/prototypes/_Graphics.pas =================================================================== --- trunk/jcl/source/prototypes/_Graphics.pas 2010-12-13 10:20:20 UTC (rev 3428) +++ trunk/jcl/source/prototypes/_Graphics.pas 2010-12-13 10:30:10 UTC (rev 3429) @@ -36,7 +36,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } @@ -61,7 +61,7 @@ JclUnitVersioning, {$ENDIF UNITVERSIONING} {$IFDEF VCL} - Graphics, JclGraphUtils, Controls, + Graphics, JclGraphUtils, Controls, Forms, {$ENDIF VCL} JclBase; @@ -531,6 +531,11 @@ RegionBitmapMode: TJclRegionBitmapMode; UseAlphaChannel: Boolean = False): HRGN; procedure ScreenShot(bm: TBitmap; Left, Top, Width, Height: Integer; Window: THandle = HWND_DESKTOP); overload; procedure ScreenShot(bm: TBitmap; IncludeTaskBar: Boolean = True); overload; +procedure ScreenShot(bm: TBitmap; ControlToPrint: TWinControl); overload; +procedure ScreenShot(bm: TBitmap; ControlToPrint: string); overload; +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: TWinControl); overload; +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm); overload; +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: String); overload; function MapWindowRect(hWndFrom, hWndTo: THandle; ARect: TRect):TRect; {$ENDIF VCL} @@ -2177,6 +2182,76 @@ ScreenShot(bm, R.Left, R.Top, R.Right, R.Bottom, HWND_DESKTOP); end; +procedure ScreenShot(bm: TBitmap; ControlToPrint: TWinControl); overload; +begin + //uses the ActiveForm property of TScreen to determine on which form the control will be searched for. + if ControlToPrint <> nil then + ScreenShot(bm, Screen.ActiveForm, ControlToPrint) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) +end; + +procedure ScreenShot(bm: TBitmap; ControlToPrint: string); overload; +begin + //uses the ActiveForm property of TScreen to determine on which form the control will be searched for. + if Length(ControlToPrint) > 0 then + ScreenShot(bm, Screen.ActiveForm, ControlToPrint) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['Component']) +end; + +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: TWinControl); overload; +begin + if FormToPrint <> nil then + begin + if (ControlToPrint is TWinControl) then + ScreenShot(bm, FormToPrint, ControlToPrint.Name) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidControlType,[ControlToPrint.Name]) + end + else + if ControlToPrint <> nil then + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) +end; + +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm); overload; +begin + //Prints the entire forms area. + if FormToPrint <> nil then + ScreenShot(bm, FormToPrint.Left, FormToPrint.Top, FormToPrint.Width, FormToPrint.Height, FormToPrint.Handle) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) +end; + +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: String); overload; +var + Component: TComponent; +begin + if FormToPrint <> nil then + begin + if Length(ControlToPrint) =0 then + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['component']) + else + begin + Component :=nil; + FormToPrint.FindComponent(ControlToPrint); + if Component =nil then + raise EJclGraphicsError.CreateResFmt(@RsComponentDoesNotExist,[ControlToPrint, FormToPrint.Name]) + else + begin + if Component is TWinControl then + ScreenShot(bm, TWinControl(Component).Left, TWinControl(Component).Top, TWinControl(Component).Width, TWinControl(Component).Height, TWinControl(Component).Handle) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidControlType,[ControlToPrint]); + end; + end; + end + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) +end; + function MapWindowRect(hWndFrom, hWndTo: THandle; ARect:TRect):TRect; begin MapWindowPoints(hWndFrom, hWndTo, ARect, 2); Modified: trunk/jcl/source/vcl/JclGraphics.pas =================================================================== --- trunk/jcl/source/vcl/JclGraphics.pas 2010-12-13 10:20:20 UTC (rev 3428) +++ trunk/jcl/source/vcl/JclGraphics.pas 2010-12-13 10:30:10 UTC (rev 3429) @@ -40,7 +40,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } @@ -54,11 +54,11 @@ uses Windows, - Forms, Classes, SysUtils, + Classes, SysUtils, {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - Graphics, JclGraphUtils, Controls, + Graphics, JclGraphUtils, Controls, Forms, JclBase; type This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-13 10:20:27
|
Revision: 3428 http://jcl.svn.sourceforge.net/jcl/?rev=3428&view=rev Author: outchy Date: 2010-12-13 10:20:20 +0000 (Mon, 13 Dec 2010) Log Message: ----------- Mantis 5440: ForceDirectories is not thread safe. Modified Paths: -------------- trunk/jcl/source/common/JclFileUtils.pas Modified: trunk/jcl/source/common/JclFileUtils.pas =================================================================== --- trunk/jcl/source/common/JclFileUtils.pas 2010-12-12 13:49:40 UTC (rev 3427) +++ trunk/jcl/source/common/JclFileUtils.pas 2010-12-13 10:20:20 UTC (rev 3428) @@ -3767,10 +3767,17 @@ Exit; ExtractPath := ExtractFilePath(Name); {$ENDIF UNIX} - if ExtractPath = '' then - Result := CreateDir(Name) - else - Result := ForceDirectories(ExtractPath) and CreateDir(Name); + Result := (ExtractPath = '') or ForceDirectories(ExtractPath); + if Result then + begin + {$IFDEF MSWINDOWS} + SetLastError(ERROR_SUCCESS); + {$ENDIF MSWINDOWS} + Result := Result and CreateDir(Name); + {$IFDEF MSWINDOWS} + Result := Result or (GetLastError = ERROR_ALREADY_EXISTS); + {$ENDIF MSWINDOWS} + end; end; function GetDirectorySize(const Path: string): Int64; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-12 13:49:48
|
Revision: 3427 http://jcl.svn.sourceforge.net/jcl/?rev=3427&view=rev Author: outchy Date: 2010-12-12 13:49:40 +0000 (Sun, 12 Dec 2010) Log Message: ----------- Mantis 5414: TJclPtrAbstractContainer.FreePointer declared as virtual Implement release events. Add search path to JPP project files. Modified Paths: -------------- trunk/jcl/devtools/jpp/Templates/JclContainerIntfTemplates.pas trunk/jcl/devtools/jpp/Templates/JclContainerKnownTypes.pas trunk/jcl/devtools/jpp/Templates/JclContainerTypes.pas trunk/jcl/devtools/jpp/jpp.dof trunk/jcl/devtools/jpp/jppContainers.dof trunk/jcl/devtools/jpp/jppExceptionDialogs.dof trunk/jcl/source/common/JclAbstractContainers.pas trunk/jcl/source/common/JclAlgorithms.pas trunk/jcl/source/common/JclContainerIntf.pas trunk/jcl/source/prototypes/JclContainerIntf.pas trunk/jcl/source/prototypes/containers/JclContainerIntf.int Modified: trunk/jcl/devtools/jpp/Templates/JclContainerIntfTemplates.pas =================================================================== --- trunk/jcl/devtools/jpp/Templates/JclContainerIntfTemplates.pas 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/devtools/jpp/Templates/JclContainerIntfTemplates.pas 2010-12-12 13:49:40 UTC (rev 3427) @@ -166,6 +166,36 @@ property TypeName: string index taTypeName read GetTypeAttribute write SetTypeAttribute stored False; end; + (* RELEASEEVENT(EVENTTYPENAME, PARAMETERNAME, TYPENAME) *) + TJclReleaseEventParams = class(TJclContainerIntf1DParams) + public + function AliasAttributeIDs: TAllTypeAttributeIDs; override; + published + property EventTypeName: string index taReleaseEventTypeName read GetTypeAttribute write SetTypeAttribute stored IsTypeAttributeStored; + property ParameterName: string index taParameterName read GetTypeAttribute write SetTypeAttribute stored False; + property TypeName: string index taTypeName read GetTypeAttribute write SetTypeAttribute stored False; + end; + + (* OWNER(INTERFACENAME, ANCESTORNAME, GUID, RELEASERNAME, RELEASEEVENTNAME, RELEASEEVENTTYPENAME, PARAMETERNAME, TYPENAME, OWNERADDITIONAL) *) + TJclOwnerParams = class(TJclContainerIntfAncestorParams) + protected + FOwnerAdditional: string; + function GetAncestorName: string; override; + function GetOwnerAdditional: string; + public + function AliasAttributeIDs: TAllTypeAttributeIDs; override; + published + property InterfaceName: string index taOwnershipInterfaceName read GetTypeAttribute write SetTypeAttribute stored IsTypeAttributeStored; + property AncestorName; + property GUID: string index taOwnershipInterfaceGUID read GetTypeAttribute write SetTypeAttribute stored IsTypeAttributeStored; + property ReleaserName: string index taReleaserName read GetTypeAttribute write SetTypeAttribute stored False; + property ReleaseEventName: string index taReleaseEventName read GetTypeAttribute write SetTypeAttribute stored IsTypeAttributeStored; + property ReleaseEventTypeName: string index taReleaseEventTypeName 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; + property OwnerAdditional: string read GetOwnerAdditional write FOwnerAdditional; + end; + (* ITERATOR(INTERFACENAME, ANCESTORNAME, GUID, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) *) TJclIteratorParams = class(TJclContainerIntfAncestorParams) protected @@ -363,6 +393,9 @@ implementation +uses + JclStrings; + procedure RegisterJclContainers; begin RegisterContainerParams('ITERPROCEDURE', TJclIterProcedureParams); @@ -374,6 +407,8 @@ RegisterContainerParams('EQUALITYCOMPARER', TJclEqualityComparerParams); RegisterContainerParams('COMPARER', TJclComparerParams); RegisterContainerParams('HASHCONVERTER', TJclHashConverterParams); + RegisterContainerParams('RELEASEEVENT', TJclReleaseEventParams); + RegisterContainerParams('OWNER', TJclOwnerParams); RegisterContainerParams('ITERATOR', TJclIteratorParams); RegisterContainerParams('TREEITERATOR', TJclTreeIteratorParams); RegisterContainerParams('BINTREEITERATOR', TJclBinaryTreeIteratorParams); @@ -495,6 +530,36 @@ Result := [taHashConverterInterfaceName]; end; +//=== { TJclReleaseEventParams } ============================================= + +function TJclReleaseEventParams.AliasAttributeIDs: TAllTypeAttributeIDs; +begin + Result := [taReleaseEventTypeName]; +end; + +//=== { TJclOwnerParams } ==================================================== + +function TJclOwnerParams.AliasAttributeIDs: TAllTypeAttributeIDs; +begin + Result := [taOwnershipInterfaceName]; +end; + +function TJclOwnerParams.GetAncestorName: string; +begin + Result := FAncestorName; + if Result = '' then + Result := 'IInterface'; +end; + +function TJclOwnerParams.GetOwnerAdditional: string; +begin + Result := FOwnerAdditional; + if (Result = '') and TypeInfo.TObjectType then + Result := NativeLineBreak + + ' function GetOwnsObjects: Boolean;' + NativeLineBreak + + ' property OwnsObjects: Boolean read GetOwnsObjects;'; +end; + //=== { TJclTreeIteratorParams } ============================================= function TJclTreeIteratorParams.AliasAttributeIDs: TAllTypeAttributeIDs; Modified: trunk/jcl/devtools/jpp/Templates/JclContainerKnownTypes.pas =================================================================== --- trunk/jcl/devtools/jpp/Templates/JclContainerKnownTypes.pas 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/devtools/jpp/Templates/JclContainerKnownTypes.pas 2010-12-12 13:49:40 UTC (rev 3427) @@ -49,7 +49,11 @@ {taDefaultValue} 'nil', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclIntfOwner', + {taOwnershipInterfaceGUID} '{17C1D3FB-BB32-48F2-BD1C-D43EA05A86A8}', {taReleaserName} 'FreeObject', + {taReleaseEventName} 'OnFreeObject', + {taReleaseEventTypeName} 'TFreeIntfEvent', {taGetterName} 'GetObject', {taSetterName} 'SetObject', {taParameterName} 'AInterface', @@ -131,7 +135,11 @@ {taDefaultValue} '''''', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclAnsiStrOwner', + {taOwnershipInterfaceGUID} '{4F64F1F6-766A-4CFA-B51B-654116E308A8}', {taReleaserName} 'FreeString', + {taReleaseEventName} 'OnFreeString', + {taReleaseEventTypeName} 'TFreeAnsiStrEvent', {taGetterName} 'GetString', {taSetterName} 'SetString', {taParameterName} 'AString', @@ -213,7 +221,11 @@ {taDefaultValue} '''''', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclWideStrOwner', + {taOwnershipInterfaceGUID} '{282B7A64-BCD0-4EAE-8776-4EF92D7E3D8B}', {taReleaserName} 'FreeString', + {taReleaseEventName} 'OnFreeString', + {taReleaseEventTypeName} 'TFreeWideStrEvent', {taGetterName} 'GetString', {taSetterName} 'SetString', {taParameterName} 'AString', @@ -295,7 +307,11 @@ {taDefaultValue} '''''', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclUnicodeStrOwner', + {taOwnershipInterfaceGUID} '{07F402E6-DD97-4AA4-83D8-4CCD419FCCFC}', {taReleaserName} 'FreeString', + {taReleaseEventName} 'OnFreeString', + {taReleaseEventTypeName} 'TFreeUnicodeStrEvent', {taGetterName} 'GetString', {taSetterName} 'SetString', {taParameterName} 'AString', @@ -377,7 +393,11 @@ {taDefaultValue} '''''', {taConstKeyword} 'const ', {taOwnershipParameter} '', - {taReleaserName} 'FreeString', + {taOwnershipInterfaceName} 'IJclStrOwner', + {taOwnershipInterfaceGUID} '', + {taReleaserName} '', + {taReleaseEventName} '', + {taReleaseEventTypeName} 'TFreeStrEvent', {taGetterName} 'GetString', {taSetterName} 'SetString', {taParameterName} 'AString', @@ -459,7 +479,11 @@ {taDefaultValue} '0.0', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclSingleOwner', + {taOwnershipInterfaceGUID} '{B002C201-70D7-4FA8-B44A-6D18E82580E5}', {taReleaserName} 'FreeSingle', + {taReleaseEventName} 'OnFreeSingle', + {taReleaseEventTypeName} 'TFreeSingleEvent', {taGetterName} 'GetValue', {taSetterName} 'SetValue', {taParameterName} 'AValue', @@ -541,7 +565,11 @@ {taDefaultValue} '0.0', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclDoubleOwner', + {taOwnershipInterfaceGUID} '{3BEFEDB0-C904-4400-ABEF-40FC928BB258}', {taReleaserName} 'FreeDouble', + {taReleaseEventName} 'OnFreeDouble', + {taReleaseEventTypeName} 'TFreeDoubleEvent', {taGetterName} 'GetValue', {taSetterName} 'SetValue', {taParameterName} 'AValue', @@ -623,7 +651,11 @@ {taDefaultValue} '0.0', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclExtendedOwner', + {taOwnershipInterfaceGUID} '{4501B203-6784-479D-8A8E-FBE3E1249CCF}', {taReleaserName} 'FreeExtended', + {taReleaseEventName} 'OnFreeExtended', + {taReleaseEventTypeName} 'TFreeExtendedEvent', {taGetterName} 'GetValue', {taSetterName} 'SetValue', {taParameterName} 'AValue', @@ -705,7 +737,11 @@ {taDefaultValue} '0.0', {taConstKeyword} 'const ', {taOwnershipParameter} '', - {taReleaserName} 'FreeValue', + {taOwnershipInterfaceName} 'IJclFloatOwner', + {taOwnershipInterfaceGUID} '', + {taReleaserName} '', + {taReleaseEventName} '', + {taReleaseEventTypeName} 'TFreeFloatEvent', {taGetterName} 'GetValue', {taSetterName} 'SetValue', {taParameterName} 'AValue', @@ -787,7 +823,11 @@ {taDefaultValue} '0', {taConstKeyword} '', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclIntegerOwner', + {taOwnershipInterfaceGUID} '{00E37ECB-0FF0-4833-8143-EB7FBEF9E208}', {taReleaserName} 'FreeInteger', + {taReleaseEventName} 'OnFreeInteger', + {taReleaseEventTypeName} 'TFreeIntegerEvent', {taGetterName} 'GetValue', {taSetterName} 'SetValue', {taParameterName} 'AValue', @@ -869,7 +909,11 @@ {taDefaultValue} '0', {taConstKeyword} '', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclCardinalOwner', + {taOwnershipInterfaceGUID} '{27B3EDEF-0ACD-4592-95F2-52A1DF5E7A39}', {taReleaserName} 'FreeCardinal', + {taReleaseEventName} 'OnFreeCardinal', + {taReleaseEventTypeName} 'TFreeCardinalEvent', {taGetterName} 'GetValue', {taSetterName} 'SetValue', {taParameterName} 'AValue', @@ -951,7 +995,11 @@ {taDefaultValue} '0', {taConstKeyword} 'const ', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclInt64Owner', + {taOwnershipInterfaceGUID} '{7D4A1375-057A-42B8-8DAA-52DE30058864}', {taReleaserName} 'FreeInt64', + {taReleaseEventName} 'OnFreeInt64', + {taReleaseEventTypeName} 'TFreeInt64Event', {taGetterName} 'GetValue', {taSetterName} 'SetValue', {taParameterName} 'AValue', @@ -1033,7 +1081,11 @@ {taDefaultValue} 'nil', {taConstKeyword} '', {taOwnershipParameter} '', + {taOwnershipInterfaceName} 'IJclPtrOwner', + {taOwnershipInterfaceGUID} '{28340328-34AD-4632-9BAC-A7387A822200}', {taReleaserName} 'FreePointer', + {taReleaseEventName} 'OnFreePointer', + {taReleaseEventTypeName} 'TFreePtrEvent', {taGetterName} 'GetPointer', {taSetterName} 'SetPointer', {taParameterName} 'APtr', @@ -1115,7 +1167,11 @@ {taDefaultValue} 'nil', {taConstKeyword} '', {taOwnershipParameter} 'AOwnsObjects', + {taOwnershipInterfaceName} 'IJclObjectOwner', + {taOwnershipInterfaceGUID} '{5157EA13-924E-4A56-995D-36956441025C}', {taReleaserName} 'FreeObject', + {taReleaseEventName} 'OnFreeObject', + {taReleaseEventTypeName} 'TFreeObjectEvent', {taGetterName} 'GetObject', {taSetterName} 'SetObject', {taParameterName} 'AObject', Modified: trunk/jcl/devtools/jpp/Templates/JclContainerTypes.pas =================================================================== --- trunk/jcl/devtools/jpp/Templates/JclContainerTypes.pas 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/devtools/jpp/Templates/JclContainerTypes.pas 2010-12-12 13:49:40 UTC (rev 3427) @@ -53,7 +53,11 @@ taDefaultValue, taConstKeyword, taOwnershipParameter, + taOwnershipInterfaceName, + taOwnershipInterfaceGUID, taReleaserName, + taReleaseEventName, + taReleaseEventTypeName, taGetterName, taSetterName, taParameterName, @@ -204,7 +208,11 @@ {DefaultValue} (IsGUID: False; DefaultValue: ''), {ConstKeyword} (IsGUID: False; DefaultValue: ''), {OwnershipParameter} (IsGUID: False; DefaultValue: ''), + {OwnershipInterfaceName} (IsGUID: False; DefaultValue: 'IJcl%sOwner'), + {OwnershipInterfaceGUID} (IsGUID: True; DefaultValue: ''), {ReleaserName} (IsGUID: False; DefaultValue: 'Free%s'), + {ReleaseEventName} (IsGUID: False; DefaultValue: 'OnFree%s'), + {ReleaseEventTypeName} (IsGUID: False; DefaultValue: 'TFree%sEvent'), {GetterName} (IsGUID: False; DefaultValue: 'Get%s'), {SetterName} (IsGUID: False; DefaultValue: 'Set%s'), {ParameterName} (IsGUID: False; DefaultValue: 'A%s'), Modified: trunk/jcl/devtools/jpp/jpp.dof =================================================================== --- trunk/jcl/devtools/jpp/jpp.dof 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/devtools/jpp/jpp.dof 2010-12-12 13:49:40 UTC (rev 3427) @@ -1,3 +1,4 @@ [Directories] OutputDir=.. UsePackages=0 +SearchPath=..\..\source\include Modified: trunk/jcl/devtools/jpp/jppContainers.dof =================================================================== --- trunk/jcl/devtools/jpp/jppContainers.dof 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/devtools/jpp/jppContainers.dof 2010-12-12 13:49:40 UTC (rev 3427) @@ -1,3 +1,4 @@ [Directories] OutputDir=.. UsePackages=0 +SearchPath=..\..\source\include Modified: trunk/jcl/devtools/jpp/jppExceptionDialogs.dof =================================================================== --- trunk/jcl/devtools/jpp/jppExceptionDialogs.dof 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/devtools/jpp/jppExceptionDialogs.dof 2010-12-12 13:49:40 UTC (rev 3427) @@ -1,3 +1,4 @@ [Directories] OutputDir=.. UsePackages=0 +SearchPath=..\..\source\include Modified: trunk/jcl/source/common/JclAbstractContainers.pas =================================================================== --- trunk/jcl/source/common/JclAbstractContainers.pas 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/source/common/JclAbstractContainers.pas 2010-12-12 13:49:40 UTC (rev 3427) @@ -166,14 +166,19 @@ end; TJclIntfAbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclIntfEqualityComparer, IJclIntfComparer, IJclIntfHashConverter) + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclIntfOwner, IJclIntfEqualityComparer, IJclIntfComparer, IJclIntfHashConverter) protected FEqualityCompare: TIntfEqualityCompare; FCompare: TIntfCompare; FHashConvert: TIntfHashConvert; + FOnFreeObject: TFreeIntfEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeObject(var AInterface: IInterface): IInterface; public + { IJclIntfOwner } + function GetOnFreeObject: TFreeIntfEvent; + function FreeObject(var AInterface: IInterface): IInterface; virtual; + procedure SetOnFreeObject(Value: TFreeIntfEvent); + property OnFreeObject: TFreeIntfEvent read GetOnFreeObject write SetOnFreeObject; { IJclIntfEqualityComparer } function GetEqualityCompare: TIntfEqualityCompare; virtual; procedure SetEqualityCompare(Value: TIntfEqualityCompare); virtual; @@ -204,16 +209,21 @@ end; TJclAnsiStrAbstractContainer = class(TJclStrAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclStrContainer, IJclAnsiStrContainer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclAnsiStrOwner, IJclStrContainer, IJclAnsiStrContainer, IJclAnsiStrEqualityComparer, IJclAnsiStrComparer, IJclAnsiStrHashConverter) protected FEncoding: TJclAnsiStrEncoding; FEqualityCompare: TAnsiStrEqualityCompare; FCompare: TAnsiStrCompare; FHashConvert: TAnsiStrHashConvert; + FOnFreeString: TFreeAnsiStrEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeString(var AString: AnsiString): AnsiString; public + { IJclAnsiStrOwner } + function GetOnFreeString: TFreeAnsiStrEvent; + function FreeString(var AString: AnsiString): AnsiString; virtual; + procedure SetOnFreeString(Value: TFreeAnsiStrEvent); + property OnFreeString: TFreeAnsiStrEvent read GetOnFreeString write SetOnFreeString; { IJclAnsiStrContainer } function GetEncoding: TJclAnsiStrEncoding; virtual; procedure SetEncoding(Value: TJclAnsiStrEncoding); virtual; @@ -236,16 +246,21 @@ end; TJclWideStrAbstractContainer = class(TJclStrAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclStrContainer, IJclWideStrContainer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclWideStrOwner, IJclStrContainer, IJclWideStrContainer, IJclWideStrEqualityComparer, IJclWideStrComparer, IJclWideStrHashConverter) protected FEncoding: TJclWideStrEncoding; FEqualityCompare: TWideStrEqualityCompare; FCompare: TWideStrCompare; FHashConvert: TWideStrHashConvert; + FOnFreeString: TFreeWideStrEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeString(var AString: WideString): WideString; public + { IJclWideStrOwner } + function GetOnFreeString: TFreeWideStrEvent; + function FreeString(var AString: WideString): WideString; virtual; + procedure SetOnFreeString(Value: TFreeWideStrEvent); + property OnFreeString: TFreeWideStrEvent read GetOnFreeString write SetOnFreeString; { IJclWideStrContainer } function GetEncoding: TJclWideStrEncoding; virtual; procedure SetEncoding(Value: TJclWideStrEncoding); virtual; @@ -269,15 +284,20 @@ {$IFDEF SUPPORTS_UNICODE_STRING} TJclUnicodeStrAbstractContainer = class(TJclStrAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclStrContainer, IJclUnicodeStrContainer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclUnicodeStrOwner, IJclStrContainer, IJclUnicodeStrContainer, IJclUnicodeStrEqualityComparer, IJclUnicodeStrComparer, IJclUnicodeStrHashConverter) protected FEqualityCompare: TUnicodeStrEqualityCompare; FCompare: TUnicodeStrCompare; FHashConvert: TUnicodeStrHashConvert; + FOnFreeString: TFreeUnicodeStrEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeString(var AString: UnicodeString): UnicodeString; public + { IJclUnicodeStrOwner } + function GetOnFreeString: TFreeUnicodeStrEvent; + function FreeString(var AString: UnicodeString): UnicodeString; virtual; + procedure SetOnFreeString(Value: TFreeUnicodeStrEvent); + property OnFreeString: TFreeUnicodeStrEvent read GetOnFreeString write SetOnFreeString; { IJclUnicodeStrEqualityComparer } function GetEqualityCompare: TUnicodeStrEqualityCompare; virtual; procedure SetEqualityCompare(Value: TUnicodeStrEqualityCompare); virtual; @@ -297,16 +317,21 @@ {$ENDIF SUPPORTS_UNICODE_STRING} TJclSingleAbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclSingleContainer, IJclSingleEqualityComparer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclSingleOwner, IJclSingleContainer, IJclSingleEqualityComparer, IJclSingleComparer, IJclSingleHashConverter) protected FPrecision: Single; FEqualityCompare: TSingleEqualityCompare; FCompare: TSingleCompare; FHashConvert: TSingleHashConvert; + FOnFreeSingle: TFreeSingleEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeSingle(var AValue: Single): Single; public + { IJclSingleOwner } + function GetOnFreeSingle: TFreeSingleEvent; + function FreeSingle(var AValue: Single): Single; virtual; + procedure SetOnFreeSingle(Value: TFreeSingleEvent); + property OnFreeSingle: TFreeSingleEvent read GetOnFreeSingle write SetOnFreeSingle; { IJclSingleContainer } function GetPrecision: Single; virtual; procedure SetPrecision(const Value: Single); virtual; @@ -329,16 +354,21 @@ end; TJclDoubleAbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclDoubleContainer, IJclDoubleEqualityComparer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclDoubleOwner, IJclDoubleContainer, IJclDoubleEqualityComparer, IJclDoubleComparer, IJclDoubleHashConverter) protected FPrecision: Double; FEqualityCompare: TDoubleEqualityCompare; FCompare: TDoubleCompare; FHashConvert: TDoubleHashConvert; + FOnFreeDouble: TFreeDoubleEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeDouble(var AValue: Double): Double; public + { IJclDoubleOwner } + function GetOnFreeDouble: TFreeDoubleEvent; + function FreeDouble(var AValue: Double): Double; virtual; + procedure SetOnFreeDouble(Value: TFreeDoubleEvent); + property OnFreeDouble: TFreeDoubleEvent read GetOnFreeDouble write SetOnFreeDouble; { IJclDoubleContainer } function GetPrecision: Double; virtual; procedure SetPrecision(const Value: Double); virtual; @@ -361,16 +391,21 @@ end; TJclExtendedAbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclExtendedContainer, IJclExtendedEqualityComparer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclExtendedOwner, IJclExtendedContainer, IJclExtendedEqualityComparer, IJclExtendedComparer, IJclExtendedHashConverter) protected FPrecision: Extended; FEqualityCompare: TExtendedEqualityCompare; FCompare: TExtendedCompare; FHashConvert: TExtendedHashConvert; + FOnFreeExtended: TFreeExtendedEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeExtended(var AValue: Extended): Extended; public + { IJclExtendedOwner } + function GetOnFreeExtended: TFreeExtendedEvent; + function FreeExtended(var AValue: Extended): Extended; virtual; + procedure SetOnFreeExtended(Value: TFreeExtendedEvent); + property OnFreeExtended: TFreeExtendedEvent read GetOnFreeExtended write SetOnFreeExtended; { IJclExtendedContainer } function GetPrecision: Extended; virtual; procedure SetPrecision(const Value: Extended); virtual; @@ -393,15 +428,20 @@ end; TJclIntegerAbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclIntegerEqualityComparer, IJclIntegerComparer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclIntegerOwner, IJclIntegerEqualityComparer, IJclIntegerComparer, IJclIntegerHashConverter) protected FEqualityCompare: TIntegerEqualityCompare; FCompare: TIntegerCompare; FHashConvert: TIntegerHashConvert; + FOnFreeInteger: TFreeIntegerEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeInteger(var AValue: Integer): Integer; public + { IJclIntegerOwner } + function GetOnFreeInteger: TFreeIntegerEvent; + function FreeInteger(var AValue: Integer): Integer; virtual; + procedure SetOnFreeInteger(Value: TFreeIntegerEvent); + property OnFreeInteger: TFreeIntegerEvent read GetOnFreeInteger write SetOnFreeInteger; { IJclIntegerEqualityComparer } function GetEqualityCompare: TIntegerEqualityCompare; virtual; procedure SetEqualityCompare(Value: TIntegerEqualityCompare); virtual; @@ -420,26 +460,31 @@ end; TJclCardinalAbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclCardinalEqualityComparer, IJclCardinalComparer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclCardinalOwner, IJclCardinalEqualityComparer, IJclCardinalComparer, IJclCardinalHashConverter) protected FEqualityCompare: TCardinalEqualityCompare; FCompare: TCardinalCompare; FHashConvert: TCardinalHashConvert; + FOnFreeCardinal: TFreeCardinalEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeCardinal(var AValue: Cardinal): Cardinal; public - { IJclIntegerEqualityComparer } + { IJclCardinalOwner } + function GetOnFreeCardinal: TFreeCardinalEvent; + function FreeCardinal(var AValue: Cardinal): Cardinal; virtual; + procedure SetOnFreeCardinal(Value: TFreeCardinalEvent); + property OnFreeCardinal: TFreeCardinalEvent read GetOnFreeCardinal write SetOnFreeCardinal; + { IJclCardinalEqualityComparer } function GetEqualityCompare: TCardinalEqualityCompare; virtual; procedure SetEqualityCompare(Value: TCardinalEqualityCompare); virtual; function ItemsEqual(A, B: Cardinal): Boolean; virtual; property EqualityCompare: TCardinalEqualityCompare read GetEqualityCompare write SetEqualityCompare; - { IJclIntegerComparer } + { IJclCardinalComparer } function GetCompare: TCardinalCompare; virtual; procedure SetCompare(Value: TCardinalCompare); virtual; function ItemsCompare(A, B: Cardinal): Integer; virtual; property Compare: TCardinalCompare read GetCompare write SetCompare; - { IJclIntegerHashConverter } + { IJclCardinalHashConverter } function GetHashConvert: TCardinalHashConvert; virtual; procedure SetHashConvert(Value: TCardinalHashConvert); virtual; function Hash(AValue: Cardinal): Integer; virtual; @@ -447,15 +492,20 @@ end; TJclInt64AbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclInt64EqualityComparer, IJclInt64Comparer, + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclInt64Owner, IJclInt64EqualityComparer, IJclInt64Comparer, IJclInt64HashConverter) protected FEqualityCompare: TInt64EqualityCompare; FCompare: TInt64Compare; FHashConvert: TInt64HashConvert; + FOnFreeInt64: TFreeInt64Event; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreeInt64(var AValue: Int64): Int64; public + { IJclInt64Owner } + function GetOnFreeInt64: TFreeInt64Event; + function FreeInt64(var AValue: Int64): Int64; virtual; + procedure SetOnFreeInt64(Value: TFreeInt64Event); + property OnFreeInt64: TFreeInt64Event read GetOnFreeInt64 write SetOnFreeInt64; { IJclInt64EqualityComparer } function GetEqualityCompare: TInt64EqualityCompare; virtual; procedure SetEqualityCompare(Value: TInt64EqualityCompare); virtual; @@ -474,14 +524,19 @@ end; TJclPtrAbstractContainer = class(TJclAbstractContainerBase, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} - IJclCloneable, IJclIntfCloneable, IJclContainer, IJclPtrEqualityComparer, IJclPtrComparer, IJclPtrHashConverter) + IJclCloneable, IJclIntfCloneable, IJclContainer, IJclPtrOwner, IJclPtrEqualityComparer, IJclPtrComparer, IJclPtrHashConverter) protected FEqualityCompare: TPtrEqualityCompare; FCompare: TPtrCompare; FHashConvert: TPtrHashConvert; + FOnFreePointer: TFreePtrEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; - function FreePointer(var APtr: Pointer): Pointer; public + { IJclPtrOwner } + function GetOnFreePointer: TFreePtrEvent; + function FreePointer(var APtr: Pointer): Pointer; virtual; + procedure SetOnFreePointer(Value: TFreePtrEvent); + property OnFreePointer: TFreePtrEvent read GetOnFreePointer write SetOnFreePointer; { IJclPtrEqualityComparer } function GetEqualityCompare: TPtrEqualityCompare; virtual; procedure SetEqualityCompare(Value: TPtrEqualityCompare); virtual; @@ -507,13 +562,17 @@ FEqualityCompare: TEqualityCompare; FCompare: TCompare; FHashConvert: THashConvert; + FOnFreeObject: TFreeObjectEvent; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; public constructor Create(AOwnsObjects: Boolean); { IJclObjectOwner } + function GetOnFreeObject: TFreeObjectEvent; function FreeObject(var AObject: TObject): TObject; virtual; + procedure SetOnFreeObject(Value: TFreeObjectEvent); + property OnFreeObject: TFreeObjectEvent read GetOnFreeObject write SetOnFreeObject; function GetOwnsObjects: Boolean; virtual; - property OwnsObjects: Boolean read FOwnsObjects; + property OwnsObjects: Boolean read GetOwnsObjects; { IJclEqualityComparer } function GetEqualityCompare: TEqualityCompare; virtual; procedure SetEqualityCompare(Value: TEqualityCompare); virtual; @@ -542,13 +601,17 @@ FEqualityCompare: TEqualityCompare<T>; FCompare: TCompare<T>; FHashConvert: THashConvert<T>; + FOnFreeItem: TFreeItemEvent<T>; procedure AssignPropertiesTo(Dest: TJclAbstractContainerBase); override; public constructor Create(AOwnsItems: Boolean); { IJclItemOwner<T> } + function GetOnFreeItem: TFreeItemEvent<T>; function FreeItem(var AItem: T): T; virtual; + procedure SetOnFreeItem(Value: TFreeItemEvent<T>); + property OnFreeItem: TFreeItemEvent<T> read GetOnFreeItem write SetOnFreeItem; function GetOwnsItems: Boolean; virtual; - property OwnsItems: Boolean read FOwnsItems; + property OwnsItems: Boolean read GetOwnsItems; { IJclEqualityComparer<T> } function GetEqualityCompare: TEqualityCompare<T>; virtual; procedure SetEqualityCompare(Value: TEqualityCompare<T>); virtual; @@ -1144,8 +1207,13 @@ function TJclIntfAbstractContainer.FreeObject(var AInterface: IInterface): IInterface; begin - Result := AInterface; - AInterface := nil; + if Assigned(FOnFreeObject) then + Result := FOnFreeObject(AInterface) + else + begin + Result := AInterface; + AInterface := nil; + end; end; function TJclIntfAbstractContainer.GetCompare: TIntfCompare; @@ -1163,6 +1231,11 @@ Result := FHashConvert; end; +function TJclIntfAbstractContainer.GetOnFreeObject: TFreeIntfEvent; +begin + Result := FOnFreeObject; +end; + function TJclIntfAbstractContainer.Hash(const AInterface: IInterface): Integer; begin if Assigned(FHashConvert) then @@ -1205,6 +1278,11 @@ FHashConvert := Value; end; +procedure TJclIntfAbstractContainer.SetOnFreeObject(Value: TFreeIntfEvent); +begin + FOnFreeObject := Value; +end; + //=== { TJclStrAbstractContainer } =========================================== procedure TJclStrAbstractContainer.AssignPropertiesTo(Dest: TJclAbstractContainerBase); @@ -1243,8 +1321,13 @@ function TJclAnsiStrAbstractContainer.FreeString(var AString: AnsiString): AnsiString; begin - Result := AString; - AString := ''; + if Assigned(FOnFreeString) then + Result := FOnFreeString(AString) + else + begin + Result := AString; + AString := ''; + end; end; function TJclAnsiStrAbstractContainer.GetCompare: TAnsiStrCompare; @@ -1267,6 +1350,11 @@ Result := FHashConvert; end; +function TJclAnsiStrAbstractContainer.GetOnFreeString: TFreeAnsiStrEvent; +begin + Result := FOnFreeString; +end; + function TJclAnsiStrAbstractContainer.Hash(const AString: AnsiString): Integer; begin if Assigned(FHashConvert) then @@ -1349,6 +1437,12 @@ FHashConvert := Value; end; +procedure TJclAnsiStrAbstractContainer.SetOnFreeString( + Value: TFreeAnsiStrEvent); +begin + FOnFreeString := Value; +end; + //=== { TJclWideStrContainer } =============================================== procedure TJclWideStrAbstractContainer.AssignPropertiesTo(Dest: TJclAbstractContainerBase); @@ -1368,8 +1462,13 @@ function TJclWideStrAbstractContainer.FreeString(var AString: WideString): WideString; begin - Result := AString; - AString := ''; + if Assigned(FOnFreeString) then + Result := FOnFreeString(AString) + else + begin + Result := AString; + AString := ''; + end; end; function TJclWideStrAbstractContainer.GetCompare: TWideStrCompare; @@ -1392,6 +1491,11 @@ Result := FHashConvert; end; +function TJclWideStrAbstractContainer.GetOnFreeString: TFreeWideStrEvent; +begin + Result := FOnFreeString; +end; + function TJclWideStrAbstractContainer.Hash(const AString: WideString): Integer; begin if Assigned(FHashConvert) then @@ -1469,6 +1573,12 @@ FHashConvert := Value; end; +procedure TJclWideStrAbstractContainer.SetOnFreeString( + Value: TFreeWideStrEvent); +begin + FOnFreeString := Value; +end; + {$IFDEF SUPPORTS_UNICODE_STRING} //=== { TJclUnicodeStrContainer } =============================================== @@ -1488,8 +1598,13 @@ function TJclUnicodeStrAbstractContainer.FreeString(var AString: UnicodeString): UnicodeString; begin - Result := AString; - AString := ''; + if Assigned(FOnFreeString) then + Result := FOnFreeString(AString) + else + begin + Result := AString; + AString := ''; + end; end; function TJclUnicodeStrAbstractContainer.GetCompare: TUnicodeStrCompare; @@ -1507,6 +1622,11 @@ Result := FHashConvert; end; +function TJclUnicodeStrAbstractContainer.GetOnFreeString: TFreeUnicodeStrEvent; +begin + Result := FOnFreeString; +end; + function TJclUnicodeStrAbstractContainer.Hash(const AString: UnicodeString): Integer; begin if Assigned(FHashConvert) then @@ -1518,7 +1638,6 @@ Result := UnicodeStrSimpleHashConvertI(AString); end; - function TJclUnicodeStrAbstractContainer.ItemsCompare(const A, B: UnicodeString): Integer; begin if Assigned(FCompare) then @@ -1558,6 +1677,11 @@ begin FHashConvert := Value; end; + +procedure TJclUnicodeStrAbstractContainer.SetOnFreeString(Value: TFreeUnicodeStrEvent); +begin + FOnFreeString := Value; +end; {$ENDIF SUPPORTS_UNICODE_STRING} //=== { TJclSingleAbstractContainer } ======================================== @@ -1579,8 +1703,13 @@ function TJclSingleAbstractContainer.FreeSingle(var AValue: Single): Single; begin - Result := AValue; - AValue := 0.0; + if Assigned(FOnFreeSingle) then + Result := FOnFreeSingle(AValue) + else + begin + Result := AValue; + AValue := 0.0; + end; end; function TJclSingleAbstractContainer.GetCompare: TSingleCompare; @@ -1598,6 +1727,11 @@ Result := FHashConvert; end; +function TJclSingleAbstractContainer.GetOnFreeSingle: TFreeSingleEvent; +begin + Result := FOnFreeSingle; +end; + function TJclSingleAbstractContainer.GetPrecision: Single; begin Result := FPrecision; @@ -1651,6 +1785,11 @@ FHashConvert := Value; end; +procedure TJclSingleAbstractContainer.SetOnFreeSingle(Value: TFreeSingleEvent); +begin + FOnFreeSingle := Value; +end; + procedure TJclSingleAbstractContainer.SetPrecision(const Value: Single); begin FPrecision := Value; @@ -1675,8 +1814,13 @@ function TJclDoubleAbstractContainer.FreeDouble(var AValue: Double): Double; begin - Result := AValue; - AValue := 0.0; + if Assigned(FOnFreeDouble) then + Result := FOnFreeDouble(AValue) + else + begin + Result := AValue; + AValue := 0.0; + end; end; function TJclDoubleAbstractContainer.GetCompare: TDoubleCompare; @@ -1694,6 +1838,11 @@ Result := FHashConvert; end; +function TJclDoubleAbstractContainer.GetOnFreeDouble: TFreeDoubleEvent; +begin + Result := FOnFreeDouble; +end; + function TJclDoubleAbstractContainer.GetPrecision: Double; begin Result := FPrecision; @@ -1747,6 +1896,11 @@ FHashConvert := Value; end; +procedure TJclDoubleAbstractContainer.SetOnFreeDouble(Value: TFreeDoubleEvent); +begin + FOnFreeDouble := Value; +end; + procedure TJclDoubleAbstractContainer.SetPrecision(const Value: Double); begin FPrecision := Value; @@ -1771,8 +1925,13 @@ function TJclExtendedAbstractContainer.FreeExtended(var AValue: Extended): Extended; begin - Result := AValue; - AValue := 0.0; + if Assigned(FOnFreeExtended) then + Result := FOnFreeExtended(AValue) + else + begin + Result := AValue; + AValue := 0.0; + end; end; function TJclExtendedAbstractContainer.GetCompare: TExtendedCompare; @@ -1790,6 +1949,11 @@ Result := FHashConvert; end; +function TJclExtendedAbstractContainer.GetOnFreeExtended: TFreeExtendedEvent; +begin + Result := FOnFreeExtended; +end; + function TJclExtendedAbstractContainer.GetPrecision: Extended; begin Result := FPrecision; @@ -1843,6 +2007,12 @@ FHashConvert := Value; end; +procedure TJclExtendedAbstractContainer.SetOnFreeExtended( + Value: TFreeExtendedEvent); +begin + FOnFreeExtended := Value; +end; + procedure TJclExtendedAbstractContainer.SetPrecision(const Value: Extended); begin FPrecision := Value; @@ -1866,8 +2036,13 @@ function TJclIntegerAbstractContainer.FreeInteger(var AValue: Integer): Integer; begin - Result := AValue; - AValue := 0; + if Assigned(FOnFreeInteger) then + Result := FOnFreeInteger(AValue) + else + begin + Result := AValue; + AValue := 0; + end; end; function TJclIntegerAbstractContainer.GetCompare: TIntegerCompare; @@ -1885,6 +2060,11 @@ Result := FHashConvert; end; +function TJclIntegerAbstractContainer.GetOnFreeInteger: TFreeIntegerEvent; +begin + Result := FOnFreeInteger; +end; + function TJclIntegerAbstractContainer.Hash(AValue: Integer): Integer; begin if Assigned(FHashConvert) then @@ -1927,6 +2107,12 @@ FHashConvert := Value; end; +procedure TJclIntegerAbstractContainer.SetOnFreeInteger( + Value: TFreeIntegerEvent); +begin + FOnFreeInteger := Value; +end; + //=== { TJclCardinalAbstractContainer } ====================================== procedure TJclCardinalAbstractContainer.AssignPropertiesTo(Dest: TJclAbstractContainerBase); @@ -1945,8 +2131,13 @@ function TJclCardinalAbstractContainer.FreeCardinal(var AValue: Cardinal): Cardinal; begin - Result := AValue; - AValue := 0; + if Assigned(FOnFreeCardinal) then + Result := FOnFreeCardinal(AValue) + else + begin + Result := AValue; + AValue := 0; + end; end; function TJclCardinalAbstractContainer.GetCompare: TCardinalCompare; @@ -1964,6 +2155,11 @@ Result := FHashConvert; end; +function TJclCardinalAbstractContainer.GetOnFreeCardinal: TFreeCardinalEvent; +begin + Result := FOnFreeCardinal; +end; + function TJclCardinalAbstractContainer.Hash(AValue: Cardinal): Integer; begin if Assigned(FHashConvert) then @@ -2006,6 +2202,12 @@ FHashConvert := Value; end; +procedure TJclCardinalAbstractContainer.SetOnFreeCardinal( + Value: TFreeCardinalEvent); +begin + FOnFreeCardinal := Value; +end; + //=== { TJclInt64AbstractContainer } ========================================= procedure TJclInt64AbstractContainer.AssignPropertiesTo(Dest: TJclAbstractContainerBase); @@ -2024,8 +2226,13 @@ function TJclInt64AbstractContainer.FreeInt64(var AValue: Int64): Int64; begin - Result := AValue; - AValue := 0; + if Assigned(FOnFreeInt64) then + Result := FOnFreeInt64(AValue) + else + begin + Result := AValue; + AValue := 0; + end; end; function TJclInt64AbstractContainer.GetCompare: TInt64Compare; @@ -2043,6 +2250,11 @@ Result := FHashConvert; end; +function TJclInt64AbstractContainer.GetOnFreeInt64: TFreeInt64Event; +begin + Result := FOnFreeInt64; +end; + function TJclInt64AbstractContainer.Hash(const AValue: Int64): Integer; begin if Assigned(FHashConvert) then @@ -2085,6 +2297,11 @@ FHashConvert := Value; end; +procedure TJclInt64AbstractContainer.SetOnFreeInt64(Value: TFreeInt64Event); +begin + FOnFreeInt64 := Value; +end; + //=== { TJclPtrAbstractContainer } =========================================== procedure TJclPtrAbstractContainer.AssignPropertiesTo(Dest: TJclAbstractContainerBase); @@ -2103,8 +2320,13 @@ function TJclPtrAbstractContainer.FreePointer(var APtr: Pointer): Pointer; begin - Result := APtr; - APtr := nil; + if Assigned(FOnFreePointer) then + Result := FOnFreePointer(APtr) + else + begin + Result := APtr; + APtr := nil; + end; end; function TJclPtrAbstractContainer.GetCompare: TPtrCompare; @@ -2122,6 +2344,11 @@ Result := FHashConvert; end; +function TJclPtrAbstractContainer.GetOnFreePointer: TFreePtrEvent; +begin + Result := FOnFreePointer; +end; + function TJclPtrAbstractContainer.Hash(APtr: Pointer): Integer; begin if Assigned(FHashConvert) then @@ -2163,6 +2390,11 @@ FHashConvert := Value; end; +procedure TJclPtrAbstractContainer.SetOnFreePointer(Value: TFreePtrEvent); +begin + FOnFreePointer := Value; +end; + //=== { TJclAbstractContainer } ============================================== constructor TJclAbstractContainer.Create(AOwnsObjects: Boolean); @@ -2187,6 +2419,9 @@ function TJclAbstractContainer.FreeObject(var AObject: TObject): TObject; begin + if Assigned(FOnFreeObject) then + Result := FOnFreeObject(AObject) + else if FOwnsObjects then begin Result := nil; @@ -2214,6 +2449,11 @@ Result := FHashConvert; end; +function TJclAbstractContainer.GetOnFreeObject: TFreeObjectEvent; +begin + Result := FOnFreeObject; +end; + function TJclAbstractContainer.GetOwnsObjects: Boolean; begin Result := FOwnsObjects; @@ -2261,6 +2501,11 @@ FHashConvert := Value; end; +procedure TJclAbstractContainer.SetOnFreeObject(Value: TFreeObjectEvent); +begin + FOnFreeObject := Value; +end; + {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN @@ -2288,6 +2533,9 @@ function TJclAbstractContainer<T>.FreeItem(var AItem: T): T; begin + if Assigned(FOnFreeItem) then + Result := FOnFreeItem(AItem) + else if FOwnsItems then begin Result := Default(T); @@ -2315,6 +2563,11 @@ Result := FHashConvert; end; +function TJclAbstractContainer<T>.GetOnFreeItem: TFreeItemEvent<T>; +begin + Result := FOnFreeItem; +end; + function TJclAbstractContainer<T>.GetOwnsItems: Boolean; begin Result := FOwnsItems; @@ -2362,6 +2615,11 @@ FHashConvert := Value; end; +procedure TJclAbstractContainer<T>.SetOnFreeItem(Value: TFreeItemEvent<T>); +begin + FOnFreeItem := Value; +end; + //DOM-IGNORE-END {$ENDIF SUPPORTS_GENERICS} Modified: trunk/jcl/source/common/JclAlgorithms.pas =================================================================== --- trunk/jcl/source/common/JclAlgorithms.pas 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/source/common/JclAlgorithms.pas 2010-12-12 13:49:40 UTC (rev 3427) @@ -1183,6 +1183,7 @@ end; end; + procedure MoveArray(var List: TDynAnsiStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then @@ -1190,6 +1191,7 @@ FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; end; Modified: trunk/jcl/source/common/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/common/JclContainerIntf.pas 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/source/common/JclContainerIntf.pas 2010-12-12 13:49:40 UTC (rev 3427) @@ -854,13 +854,175 @@ property AutoGrowStrategy: TJclAutoGrowStrategy read GetAutoGrowStrategy write SetAutoGrowStrategy; end; - IJclObjectOwner = interface + + TFreeIntfEvent = function (var AInterface: IInterface): IInterface of object; + + IJclIntfOwner = interface(IInterface) + ['{17C1D3FB-BB32-48F2-BD1C-D43EA05A86A8}'] + function GetOnFreeObject: TFreeIntfEvent; + function FreeObject(var AInterface: IInterface): IInterface; + procedure SetOnFreeObject(Value: TFreeIntfEvent); + property OnFreeObject: TFreeIntfEvent read GetOnFreeObject write SetOnFreeObject; + end; + + TFreeAnsiStrEvent = function (var AString: AnsiString): AnsiString of object; + + IJclAnsiStrOwner = interface(IInterface) + ['{4F64F1F6-766A-4CFA-B51B-654116E308A8}'] + function GetOnFreeString: TFreeAnsiStrEvent; + function FreeString(var AString: AnsiString): AnsiString; + procedure SetOnFreeString(Value: TFreeAnsiStrEvent); + property OnFreeString: TFreeAnsiStrEvent read GetOnFreeString write SetOnFreeString; + end; + + TFreeWideStrEvent = function (var AString: WideString): WideString of object; + + IJclWideStrOwner = interface(IInterface) + ['{282B7A64-BCD0-4EAE-8776-4EF92D7E3D8B}'] + function GetOnFreeString: TFreeWideStrEvent; + function FreeString(var AString: WideString): WideString; + procedure SetOnFreeString(Value: TFreeWideStrEvent); + property OnFreeString: TFreeWideStrEvent read GetOnFreeString write SetOnFreeString; + end; + + {$IFDEF SUPPORTS_UNICODE_STRING} + TFreeUnicodeStrEvent = function (var AString: UnicodeString): UnicodeString of object; + + {$ENDIF SUPPORTS_UNICODE_STRING} + + {$IFDEF SUPPORTS_UNICODE_STRING} + IJclUnicodeStrOwner = interface(IInterface) + ['{07F402E6-DD97-4AA4-83D8-4CCD419FCCFC}'] + function GetOnFreeString: TFreeUnicodeStrEvent; + function FreeString(var AString: UnicodeString): UnicodeString; + procedure SetOnFreeString(Value: TFreeUnicodeStrEvent); + property OnFreeString: TFreeUnicodeStrEvent read GetOnFreeString write SetOnFreeString; + end; + {$ENDIF SUPPORTS_UNICODE_STRING} + + {$IFDEF CONTAINER_ANSISTR} + TFreeStrEvent = TFreeAnsiStrEvent; + {$ENDIF CONTAINER_ANSISTR} + {$IFDEF CONTAINER_WIDESTR} + TFreeStrEvent = TFreeWideStrEvent; + {$ENDIF CONTAINER_WIDESTR} + {$IFDEF CONTAINER_UNICODESTR} + TFreeStrEvent = TFreeUnicodeStrEvent; + {$ENDIF CONTAINER_UNICODESTR} + + {$IFDEF CONTAINER_ANSISTR} + IJclStrOwner = IJclAnsiStrOwner; + {$ENDIF CONTAINER_ANSISTR} + {$IFDEF CONTAINER_WIDESTR} + IJclStrOwner = IJclWideStrOwner; + {$ENDIF CONTAINER_WIDESTR} + {$IFDEF CONTAINER_UNICODESTR} + IJclStrOwner = IJclUnicodeStrOwner; + {$ENDIF CONTAINER_UNICODESTR} + + TFreeSingleEvent = function (var AValue: Single): Single of object; + + IJclSingleOwner = interface(IInterface) + ['{B002C201-70D7-4FA8-B44A-6D18E82580E5}'] + function GetOnFreeSingle: TFreeSingleEvent; + function FreeSingle(var AValue: Single): Single; + procedure SetOnFreeSingle(Value: TFreeSingleEvent); + property OnFreeSingle: TFreeSingleEvent read GetOnFreeSingle write SetOnFreeSingle; + end; + + TFreeDoubleEvent = function (var AValue: Double): Double of object; + + IJclDoubleOwner = interface(IInterface) + ['{3BEFEDB0-C904-4400-ABEF-40FC928BB258}'] + function GetOnFreeDouble: TFreeDoubleEvent; + function FreeDouble(var AValue: Double): Double; + procedure SetOnFreeDouble(Value: TFreeDoubleEvent); + property OnFreeDouble: TFreeDoubleEvent read GetOnFreeDouble write SetOnFreeDouble; + end; + + TFreeExtendedEvent = function (var AValue: Extended): Extended of object; + + IJclExtendedOwner = interface(IInterface) + ['{4501B203-6784-479D-8A8E-FBE3E1249CCF}'] + function GetOnFreeExtended: TFreeExtendedEvent; + function FreeExtended(var AValue: Extended): Extended; + procedure SetOnFreeExtended(Value: TFreeExtendedEvent); + property OnFreeExtended: TFreeExtendedEvent read GetOnFreeExtended write SetOnFreeExtended; + end; + + {$IFDEF MATH_SINGLE_PRECISION} + TFreeFloatEvent = TFreeSingleEvent; + {$ENDIF MATH_SINGLE_PRECISION} + {$IFDEF MATH_DOUBLE_PRECISION} + TFreeFloatEvent = TFreeDoubleEvent; + {$ENDIF MATH_DOUBLE_PRECISION} + {$IFDEF MATH_EXTENDED_PRECISION} + TFreeFloatEvent = TFreeExtendedEvent; + {$ENDIF MATH_EXTENDED_PRECISION} + + {$IFDEF MATH_SINGLE_PRECISION} + IJclFloatOwner = IJclSingleOwner; + {$ENDIF MATH_SINGLE_PRECISION} + {$IFDEF MATH_DOUBLE_PRECISION} + IJclFloatOwner = IJclDoubleOwner; + {$ENDIF MATH_DOUBLE_PRECISION} + {$IFDEF MATH_EXTENDED_PRECISION} + IJclFloatOwner = IJclExtendedOwner; + {$ENDIF MATH_EXTENDED_PRECISION} + + TFreeIntegerEvent = function (var AValue: Integer): Integer of object; + + IJclIntegerOwner = interface(IInterface) + ['{00E37ECB-0FF0-4833-8143-EB7FBEF9E208}'] + function GetOnFreeInteger: TFreeIntegerEvent; + function FreeInteger(var AValue: Integer): Integer; + procedure SetOnFreeInteger(Value: TFreeIntegerEvent); + property OnFreeInteger: TFreeIntegerEvent read GetOnFreeInteger write SetOnFreeInteger; + end; + + TFreeCardinalEvent = function (var AValue: Cardinal): Cardinal of object; + + IJclCardinalOwner = interface(IInterface) + ['{27B3EDEF-0ACD-4592-95F2-52A1DF5E7A39}'] + function GetOnFreeCardinal: TFreeCardinalEvent; + function FreeCardinal(var AValue: Cardinal): Cardinal; + procedure SetOnFreeCardinal(Value: TFreeCardinalEvent); + property OnFreeCardinal: TFreeCardinalEvent read GetOnFreeCardinal write SetOnFreeCardinal; + end; + + TFreeInt64Event = function (var AValue: Int64): Int64 of object; + + IJclInt64Owner = interface(IInterface) + ['{7D4A1375-057A-42B8-8DAA-52DE30058864}'] + function GetOnFreeInt64: TFreeInt64Event; + function FreeInt64(var AValue: Int64): Int64; + procedure SetOnFreeInt64(Value: TFreeInt64Event); + property OnFreeInt64: TFreeInt64Event read GetOnFreeInt64 write SetOnFreeInt64; + end; + + TFreePtrEvent = function (var APtr: Pointer): Pointer of object; + + IJclPtrOwner = interface(IInterface) + ['{28340328-34AD-4632-9BAC-A7387A822200}'] + function GetOnFreePointer: TFreePtrEvent; + function FreePointer(var APtr: Pointer): Pointer; + procedure SetOnFreePointer(Value: TFreePtrEvent); + property OnFreePointer: TFreePtrEvent read GetOnFreePointer write SetOnFreePointer; + end; + + TFreeObjectEvent = function (var AObject: TObject): TObject of object; + + IJclObjectOwner = interface(IInterface) ['{5157EA13-924E-4A56-995D-36956441025C}'] + function GetOnFreeObject: TFreeObjectEvent; function FreeObject(var AObject: TObject): TObject; + procedure SetOnFreeObject(Value: TFreeObjectEvent); + property OnFreeObject: TFreeObjectEvent read GetOnFreeObject write SetOnFreeObject; function GetOwnsObjects: Boolean; property OwnsObjects: Boolean read GetOwnsObjects; end; + IJclKeyOwner = interface ['{8BE209E6-2F85-44FD-B0CD-A8363C95349A}'] function FreeKey(var Key: TObject): TObject; @@ -878,9 +1040,14 @@ {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN - IJclItemOwner<T> = interface + TFreeItemEvent<T> = function (var AItem: T): T of object; + + IJclItemOwner<T> = interface(IInterface) ['{0CC220C1-E705-4B21-9F53-4AD340952165}'] + function GetOnFreeItem: TFreeItemEvent<T>; function FreeItem(var AItem: T): T; + procedure SetOnFreeItem(Value: TFreeItemEvent<T>); + property OnFreeItem: TFreeItemEvent<T> read GetOnFreeItem write SetOnFreeItem; function GetOwnsItems: Boolean; property OwnsItems: Boolean read GetOwnsItems; end; Modified: trunk/jcl/source/prototypes/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/prototypes/JclContainerIntf.pas 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/source/prototypes/JclContainerIntf.pas 2010-12-12 13:49:40 UTC (rev 3427) @@ -329,13 +329,12 @@ property AutoGrowStrategy: TJclAutoGrowStrategy read GetAutoGrowStrategy write SetAutoGrowStrategy; end; - IJclObjectOwner = interface - ['{5157EA13-924E-4A56-995D-36956441025C}'] - function FreeObject(var AObject: TObject): TObject; - function GetOwnsObjects: Boolean; - property OwnsObjects: Boolean read GetOwnsObjects; - end; +(*$JPPLOOP ALLTYPEINDEX ALLTYPECOUNT + {$JPPEXPANDMACRO RELEASEEVENT(,,)} + {$JPPEXPANDMACRO OWNER(,,,,,,,,)} +*) + IJclKeyOwner = interface ['{8BE209E6-2F85-44FD-B0CD-A8363C95349A}'] function FreeKey(var Key: TObject): TObject; @@ -353,13 +352,12 @@ {$IFDEF SUPPORTS_GENERICS} //DOM-IGNORE-BEGIN - IJclItemOwner<T> = interface - ['{0CC220C1-E705-4B21-9F53-4AD340952165}'] - function FreeItem(var AItem: T): T; - function GetOwnsItems: Boolean; - property OwnsItems: Boolean read GetOwnsItems; - end; + {$JPPEXPANDMACRO RELEASEEVENT(TFreeItemEvent<T>,AItem,T)} + (*$JPPEXPANDMACRO OWNER(IJclItemOwner<T>,IInterface,{0CC220C1-E705-4B21-9F53-4AD340952165},FreeItem,OnFreeItem,TFreeItemEvent<T>,AItem,T, + function GetOwnsItems: Boolean; + property OwnsItems: Boolean read GetOwnsItems;)*) + IJclPairOwner<TKey, TValue> = interface ['{321C1FF7-AA2E-4229-966A-7EC6417EA16D}'] function FreeKey(var Key: TKey): TKey; Modified: trunk/jcl/source/prototypes/containers/JclContainerIntf.int =================================================================== --- trunk/jcl/source/prototypes/containers/JclContainerIntf.int 2010-12-07 18:03:58 UTC (rev 3426) +++ trunk/jcl/source/prototypes/containers/JclContainerIntf.int 2010-12-12 13:49:40 UTC (rev 3427) @@ -34,6 +34,17 @@ function Hash(CONSTKEYWORDPARAMETERNAME: TYPENAME): Integer; property HashConvert: HASHCONVERTTYPENAME read GetHashConvert write SetHashConvert; end;*) +(*$JPPDEFINEMACRO RELEASEEVENT(EVENTTYPENAME, PARAMETERNAME, TYPENAME) +EVENTTYPENAME = function (var PARAMETERNAME: TYPENAME): TYPENAME of object; +*) +(*$JPPDEFINEMACRO OWNER(INTERFACENAME, ANCESTORNAME, GUID, RELEASERNAME, RELEASEEVENTNAME, RELEASEEVENTTYPENAME, PARAMETERNAME, TYPENAME, OWNERADDITIONAL) +INTERFACENAME = interface(ANCESTORNAME) + ['GUID'] + function GetRELEASEEVENTNAME: RELEASEEVENTTYPENAME; + function RELEASERNAME(var PARAMETERNAME: TYPENAME): TYPENAME; + procedure SetRELEASEEVENTNAME(Value: RELEASEEVENTTYPENAME); + property RELEASEEVENTNAME: RELEASEEVENTTYPENAME read GetRELEASEEVENTNAME write SetRELEASEEVENTNAME;OWNERADDITIONAL +end;*) (*$JPPDEFINEMACRO ITERATOR(INTERFACENAME, ANCESTORNAME, GUID, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) INTERFACENAME = interface(ANCESTORNAME) ['GUID'] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-07 18:04:06
|
Revision: 3426 http://jcl.svn.sourceforge.net/jcl/?rev=3426&view=rev Author: outchy Date: 2010-12-07 18:03:58 +0000 (Tue, 07 Dec 2010) Log Message: ----------- purge the explicitly enabled and disabled topic export states. cleanup of exported topics for each configuration. Modified Paths: -------------- trunk/help/JCLHelp.dox Modified: trunk/help/JCLHelp.dox =================================================================== --- trunk/help/JCLHelp.dox 2010-12-07 16:40:12 UTC (rev 3425) +++ trunk/help/JCLHelp.dox 2010-12-07 18:03:58 UTC (rev 3426) @@ -401,7 +401,7 @@ [Configurations] Count=6 -Current=1 +Current=0 Name0=HTML Name1=CHM Name2=H2 @@ -11286,446 +11286,17 @@ BodySourceUseSyntaxHighlight=0 [Configurations\CHM\Disabled Topics] -Count=394 -ID0=_DLLVERSIONINFO.dwPlatformId -ID1=_FILE_ZERO_DATA_INFORMATION -ID10=_IMAGE_RESOURCE_DIRECTORY -ID100=DOMAIN_ALIAS_RID_USERS -ID101=DOMAIN_GROUP_RID_ADMINS -ID102=DOMAIN_GROUP_RID_CERT_ADMINS -ID103=DOMAIN_GROUP_RID_COMPUTERS -ID104=DOMAIN_GROUP_RID_CONTROLLERS -ID105=DOMAIN_GROUP_RID_ENTERPRISE_ADMINS -ID106=DOMAIN_GROUP_RID_GUESTS -ID107=DOMAIN_GROUP_RID_POLICY_ADMINS -ID108=DOMAIN_GROUP_RID_SCHEMA_ADMINS -ID109=DOMAIN_GROUP_RID_USERS -ID11=_IMAGE_RESOURCE_DIRECTORY_ENTRY -ID110=DOMAIN_USER_RID_ADMIN -ID111=DOMAIN_USER_RID_GUEST -ID112=DOMAIN_USER_RID_KRBTGT -ID113=EJclError.CreateResRec -ID114=EJclError.CreateResRecFmt -ID115=EJclRTTI -ID116=EJclWin32Error.CreateResRec -ID117=FILE_ANY_ACCESS -ID118=FILE_ATTRIBUTE_DEVICE -ID119=FILE_ATTRIBUTE_ENCRYPTED -ID12=_IMAGE_THUNK_DATA -ID120=FILE_ATTRIBUTE_NOT_CONTENT_INDEXED -ID121=FILE_ATTRIBUTE_REPARSE_POINT -ID122=FILE_ATTRIBUTE_SPARSE_FILE -ID123=FILE_DEVICE_FILE_SYSTEM -ID124=FILE_FLAG_OPEN_REPARSE_POINT -ID125=FILE_READ_ACCESS -ID126=FILE_READ_DATA -ID127=FILE_SPECIAL_ACCESS -ID128=FILE_SUPPORTS_REPARSE_POINTS -ID129=FILE_SUPPORTS_SPARSE_FILES -ID13=_IMAGE_TLS_DIRECTORY -ID130=FILE_WRITE_ACCESS -ID131=FILE_WRITE_DATA -ID132=FloatIsZero -ID133=FSCTL_DELETE_REPARSE_POINT -ID134=FSCTL_GET_COMPRESSION -ID135=FSCTL_GET_REPARSE_POINT -ID136=FSCTL_LOCK_VOLUME -ID137=FSCTL_OPBATCH_ACK_CLOSE_PENDING -ID138=FSCTL_OPLOCK_BREAK_ACK_NO_2 -ID139=FSCTL_OPLOCK_BREAK_ACKNOWLEDGE -ID14=_MODULEINFO -ID140=FSCTL_OPLOCK_BREAK_NOTIFY -ID141=FSCTL_QUERY_ALLOCATED_RANGES -ID142=FSCTL_REQUEST_BATCH_OPLOCK -ID143=FSCTL_REQUEST_FILTER_OPLOCK -ID144=FSCTL_REQUEST_OPLOCK_LEVEL_1 -ID145=FSCTL_REQUEST_OPLOCK_LEVEL_2 -ID146=FSCTL_SET_COMPRESSION -ID147=FSCTL_SET_REPARSE_POINT -ID148=FSCTL_SET_SPARSE -ID149=FSCTL_SET_ZERO_DATA -ID15=_REPARSE_DATA_BUFFER -ID150=FSCTL_UNLOCK_VOLUME -ID151=IContextMenu2 -ID152=IJclMIDIOut.GetActiveNotes@TMIDIChannel -ID153=IJclMIDIOut.GetName -ID154=IJclMIDIOut.GetRunningStatusEnabled -ID155=IJclMIDIOut.SetRunningStatusEnabled@Boolean -ID156=IJclMultiIntfIntfMap -ID157=IMAGE_BASE_RELOCATION -ID158=IMAGE_BOUND_FORWARDER_REF -ID159=IMAGE_BOUND_IMPORT_DESCRIPTOR -ID16=_REPARSE_POINT_INFORMATION -ID160=IMAGE_COR20_HEADER -ID161=IMAGE_DEBUG_TYPE_BORLAND -ID162=IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR -ID163=IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT -ID164=IMAGE_EXPORT_DIRECTORY -ID165=IMAGE_IMPORT_BY_NAME -ID166=IMAGE_IMPORT_DESCRIPTOR -ID167=IMAGE_LOAD_CONFIG_DIRECTORY -ID168=IMAGE_ORDINAL_FLAG -ID169=IMAGE_REL_BASED_ABSOLUTE -ID17=AMD_APIC_FLAG -ID170=IMAGE_REL_BASED_DIR64 -ID171=IMAGE_REL_BASED_HIGH -ID172=IMAGE_REL_BASED_HIGH3ADJ -ID173=IMAGE_REL_BASED_HIGHADJ -ID174=IMAGE_REL_BASED_HIGHLOW -ID175=IMAGE_REL_BASED_IA64_IMM64 -ID176=IMAGE_REL_BASED_LOW -ID177=IMAGE_REL_BASED_MIPS_JMPADDR -ID178=IMAGE_REL_BASED_MIPS_JMPADDR16 -ID179=IMAGE_REL_BASED_REL32 -ID18=AMD_BIT_10 -ID180=IMAGE_REL_BASED_SECTION -ID181=IMAGE_RESOURCE_DATA_ENTRY -ID182=IMAGE_RESOURCE_DATA_IS_DIRECTORY -ID183=IMAGE_RESOURCE_DIR_STRING_U -ID184=IMAGE_RESOURCE_DIRECTORY -ID185=IMAGE_RESOURCE_DIRECTORY_ENTRY -ID186=IMAGE_RESOURCE_NAME_IS_STRING -ID187=IMAGE_SIZEOF_BASE_RELOCATION -ID188=IMAGE_THUNK_DATA -ID189=IMAGE_TLS_DIRECTORY -ID19=AMD_BIT_11 -ID190=ImgDelayDescr -ID191=IO_REPARSE_TAG_HSM -ID192=IO_REPARSE_TAG_MOUNT_POINT -ID193=IO_REPARSE_TAG_RESERVED_ONE -ID194=IO_REPARSE_TAG_RESERVED_RANGE -ID195=IO_REPARSE_TAG_RESERVED_ZERO -ID196=IO_REPARSE_TAG_SIS -ID197=IO_REPARSE_TAG_VALID_VALUES -ID198=IQueryInfo -ID199=JclDebug.pas -ID2=_IMAGE_BASE_RELOCATION -ID20=AMD_BIT_14 -ID200=JclGraphics.pas -ID201=JclHookIs -ID202=JclIsHooked -ID203=JclMidi.pas -ID204=JclNTFS.pas -ID205=JclRegistry.pas -ID206=JclUnhookIs -ID207=KLF_SETFORPROCESS -ID208=MAX_LANA -ID209=MAX_MODULE_NAME32 -ID21=AMD_BIT_16 -ID210=MAXIMUM_REPARSE_DATA_BUFFER_SIZE -ID211=METHOD_BUFFERED -ID212=METHOD_IN_DIRECT -ID213=METHOD_NEITHER -ID214=METHOD_OUT_DIRECT -ID215=NCBASTAT -ID216=NCBENUM -ID217=NCBNAMSZ -ID218=NCBRESET -ID219=NRC_GOODRET -ID22=AMD_BIT_17 -ID220=PAdapterStatus -ID221=PANonObjectHeader -ID222=PFileAllocatedRangeBuffer -ID223=PFileZeroDataInformation -ID224=PImageBaseRelocation -ID225=PImageBoundForwarderRef -ID226=PImageBoundImportDescriptor -ID227=PImageCor20Header -ID228=PImageExportDirectory -ID229=PImageImportByName -ID23=AMD_BIT_18 -ID230=PImageImportDescriptor -ID231=PImageLoadConfigDirectory -ID232=PImageResourceDataEntry -ID233=PImageResourceDirectory -ID234=PImageResourceDirectoryEntry -ID235=PImageResourceDirStringU -ID236=PImageThunkData -ID237=PImageTlsDirectory -ID238=PImgDelayDescr -ID239=PLanaEnum -ID24=AMD_BIT_19 -ID240=PModuleInfo -ID241=PNameBuffer -ID242=PNCB -ID243=POSVersionInfoEx -ID244=PPImageSectionHeader -ID245=PPSID -ID246=PReparseDataBuffer -ID247=PReparsePointInformation -ID248=REPARSE_DATA_BUFFER_HEADER_SIZE -ID249=REPARSE_GUID_DATA_BUFFER_HEADER_SIZE -ID25=AMD_BIT_20 -ID250=RT_HTML -ID251=RT_MANIFEST -ID252=SE_ASSIGNPRIMARYTOKEN_NAME -ID253=SE_AUDIT_NAME -ID254=SE_BACKUP_NAME -ID255=SE_CHANGE_NOTIFY_NAME -ID256=SE_CREATE_PAGEFILE_NAME -ID257=SE_CREATE_PERMANENT_NAME -ID258=SE_CREATE_TOKEN_NAME -ID259=SE_DEBUG_NAME -ID26=AMD_BIT_21 -ID260=SE_ENABLE_DELEGATION_NAME -ID261=SE_INC_BASE_PRIORITY_NAME -ID262=SE_INCREASE_QUOTA_NAME -ID263=SE_LOAD_DRIVER_NAME -ID264=SE_LOCK_MEMORY_NAME -ID265=SE_MACHINE_ACCOUNT_NAME -ID266=SE_OBJECT_TYPE -ID267=SE_PROF_SINGLE_PROCESS_NAME -ID268=SE_REMOTE_SHUTDOWN_NAME -ID269=SE_RESTORE_NAME -ID27=AMD_BIT_22 -ID270=SE_SECURITY_NAME -ID271=SE_SHUTDOWN_NAME -ID272=SE_SYNC_AGENT_NAME -ID273=SE_SYSTEM_ENVIRONMENT_NAME -ID274=SE_SYSTEM_PROFILE_NAME -ID275=SE_SYSTEMTIME_NAME -ID276=SE_TAKE_OWNERSHIP_NAME -ID277=SE_TCB_NAME -ID278=SE_UNDOCK_NAME -ID279=SE_UNSOLICITED_INPUT_NAME -ID28=AMD_BIT_24 -ID280=SECURITY_ANONYMOUS_LOGON_RID -ID281=SECURITY_AUTHENTICATED_USER_RID -ID282=SECURITY_BATCH_RID -ID283=SECURITY_BUILTIN_DOMAIN_RID -ID284=SECURITY_CREATOR_GROUP_RID -ID285=SECURITY_CREATOR_GROUP_SERVER_RID -ID286=SECURITY_CREATOR_OWNER_RID -ID287=SECURITY_CREATOR_OWNER_SERVER_RID -ID288=SECURITY_CREATOR_SID_AUTHORITY -ID289=SECURITY_DESCRIPTOR_MIN_LENGTH -ID29=AMD_BIT_25 -ID290=SECURITY_DESCRIPTOR_REVISION -ID291=SECURITY_DESCRIPTOR_REVISION1 -ID292=SECURITY_DIALUP_RID -ID293=SECURITY_ENTERPRISE_CONTROLLERS_RID -ID294=SECURITY_INTERACTIVE_RID -ID295=SECURITY_LOCAL_RID -ID296=SECURITY_LOCAL_SID_AUTHORITY -ID297=SECURITY_LOCAL_SYSTEM_RID -ID298=SECURITY_LOGON_IDS_RID -ID299=SECURITY_LOGON_IDS_RID_COUNT -ID3=_IMAGE_BOUND_FORWARDER_REF -ID30=AMD_BIT_26 -ID300=SECURITY_NETWORK_RID -ID301=SECURITY_NON_UNIQUE_AUTHORITY -ID302=SECURITY_NT_AUTHORITY -ID303=SECURITY_NT_NON_UNIQUE -ID304=SECURITY_NULL_RID -ID305=SECURITY_NULL_SID_AUTHORITY -ID306=SECURITY_PRINCIPAL_SELF_RID -ID307=SECURITY_PROXY_RID -ID308=SECURITY_RESTRICTED_CODE_RID -ID309=SECURITY_SERVER_LOGON_RID -ID31=AMD_BIT_27 -ID310=SECURITY_SERVICE_RID -ID311=SECURITY_TERMINAL_SERVER_RID -ID312=SECURITY_WORLD_RID -ID313=SECURITY_WORLD_SID_AUTHORITY -ID314=SID_IQueryInfo -ID315=TAdapterStatus -ID316=tagMODULEENTRY32 -ID317=TAMDSpecific.DataTLB -ID318=TAMDSpecific.InstructionTLB -ID319=TAMDSpecific.L1ICache -ID32=AMD_BIT_28 -ID320=TANonObjectHeader -ID321=TCoCreateInstanceExProc -ID322=TExprCompileParser.CompileExpr -ID323=TExprCompileParser.CompileSignedFactor -ID324=TExprCompileParser.CompileSimpleExpr -ID325=TExprCompileParser.CompileTerm -ID326=TExprEvalParser.EvalExpr -ID327=TExprEvalParser.EvalSignedFactor -ID328=TExprEvalParser.EvalSimpleExpr -ID329=TExprEvalParser.EvalTerm -ID33=AMD_BIT_29 -ID330=TFileAllocatedRangeBuffer -ID331=TFileZeroDataInformation -ID332=TH32CS_SNAPMODULE -ID333=TImageBaseRelocation -ID334=TImageBoundForwarderRef -ID335=TImageBoundImportDescriptor -ID336=TImageCor20Header -ID337=TImageExportDirectory -ID338=TImageImportByName -ID339=TImageImportDescriptor -ID34=AMD_BIT_30 -ID340=TImageLoadConfigDirectory -ID341=TImageResourceDataEntry -ID342=TImageResourceDirectory -ID343=TImageResourceDirectoryEntry -ID344=TImageResourceDirStringU -ID345=TImageThunkData -ID346=TImageTlsDirectory -ID347=TIME_ZONE_ID_DAYLIGHT -ID348=TIME_ZONE_ID_INVALID -ID349=TIME_ZONE_ID_STANDARD -ID35=AMD_BIT_31 -ID350=TIME_ZONE_ID_UNKNOWN -ID351=TImgDelayDescr -ID352=TJclBitmap32.FrameRect -ID353=TJclBitmap32.OnPixelCombine -ID354=TJclByteMap.Byte -ID355=TJclDesktopCanvas.Create -ID356=TJclDesktopCanvas.Destroy -ID357=TJclIsFunc -ID358=TJclRebaseImageInfo.NewImageBase -ID359=TJclRebaseImageInfo.NewImageSize -ID36=AMD_BIT_6 -ID360=TJclRebaseImageInfo.OldImageBase -ID361=TJclRebaseImageInfo.OldImageSize -ID362=TLanaEnum -ID363=TLoadedImage -ID364=TModuleEntry32 -ID365=TModuleInfo -ID366=TNameBuffer -ID367=TNCB -ID368=TNCBPostProc -ID369=TObjectList.Clear -ID37=AMD_CMOV_FLAG -ID370=TObjectList.Create -ID371=TObjectList.OwnsObjects -ID372=TOSVersionInfoEx -ID373=TReparseDataBuffer -ID374=TReparsePointInformation -ID375=TWideStrings.Destroy -ID376=VER_NT_DOMAIN_CONTROLLER -ID377=VER_NT_SERVER -ID378=VER_NT_WORKSTATION -ID379=VER_SUITE_BACKOFFICE -ID38=AMD_CX8_FLAG -ID380=VER_SUITE_COMMUNICATIONS -ID381=VER_SUITE_DATACENTER -ID382=VER_SUITE_EMBEDDEDNT -ID383=VER_SUITE_ENTERPRISE -ID384=VER_SUITE_PERSONAL -ID385=VER_SUITE_SERVERAPPLIANCE -ID386=VER_SUITE_SINGLEUSERTS -ID387=VER_SUITE_SMALLBUSINESS -ID388=VER_SUITE_SMALLBUSINESS_RESTRICTED -ID389=VER_SUITE_TERMINAL -ID39=AMD_DE_FLAG -ID390=Win32BackupFile -ID391=Win32DeleteFile -ID392=Win32MoveFileReplaceExisting -ID393=Win32RestoreFile -ID4=_IMAGE_BOUND_IMPORT_DESCRIPTOR -ID40=AMD_FPU_FLAG -ID41=AMD_MCE_FLAG -ID42=AMD_MMX_FLAG -ID43=AMD_MSR_FLAG -ID44=AMD_MTRR_FLAG -ID45=AMD_PGE_FLAG -ID46=AMD_PSE_FLAG -ID47=AMD_TSC_FLAG -ID48=AMD_VME_FLAG -ID49=ANON_OBJECT_HEADER -ID5=_IMAGE_EXPORT_DIRECTORY -ID50=ASTAT -ID51=BaseServices.FPCCompatibility -ID52=BaseServices.TObjectList -ID53=BIT_10 -ID54=BIT_18 -ID55=BIT_19 -ID56=BIT_20 -ID57=BIT_21 -ID58=BIT_22 -ID59=BIT_25 -ID6=_IMAGE_IMPORT_BY_NAME -ID60=BIT_26 -ID61=BIT_27 -ID62=BIT_28 -ID63=BIT_29 -ID64=BIT_30 -ID65=BIT_31 -ID66=clAqua32 -ID67=clBlack32 -ID68=clBlue32 -ID69=clDimGray32 -ID7=_IMAGE_IMPORT_DESCRIPTOR -ID70=clFuchsia32 -ID71=clGray32 -ID72=clGreen32 -ID73=clLightGray32 -ID74=clLime32 -ID75=clMaroon32 -ID76=clNavy32 -ID77=clOlive32 -ID78=clPurple32 -ID79=clRed32 -ID8=_IMAGE_RESOURCE_DATA_ENTRY -ID80=COMIMAGE_FLAGS_32BITREQUIRED -ID81=COMIMAGE_FLAGS_IL_LIBRARY -ID82=COMIMAGE_FLAGS_ILONLY -ID83=COMIMAGE_FLAGS_STRONGNAMESIGNED -ID84=COMIMAGE_FLAGS_TRACKDEBUGDATA -ID85=COMPRESSION_FORMAT_DEFAULT -ID86=COMPRESSION_FORMAT_LZNT1 -ID87=COMPRESSION_FORMAT_NONE -ID88=Containers.Associative.Multimaps -ID89=DATE_YEARMONTH -ID9=_IMAGE_RESOURCE_DIR_STRING_U -ID90=DOMAIN_ALIAS_RID_ACCOUNT_OPS -ID91=DOMAIN_ALIAS_RID_ADMINS -ID92=DOMAIN_ALIAS_RID_BACKUP_OPS -ID93=DOMAIN_ALIAS_RID_GUESTS -ID94=DOMAIN_ALIAS_RID_POWER_USERS -ID95=DOMAIN_ALIAS_RID_PREW2KCOMPACCESS -ID96=DOMAIN_ALIAS_RID_PRINT_OPS -ID97=DOMAIN_ALIAS_RID_RAS_SERVERS -ID98=DOMAIN_ALIAS_RID_REPLICATOR -ID99=DOMAIN_ALIAS_RID_SYSTEM_OPS +Count=0 [Configurations\CHM\Enabled Topics] -Count=35 -ID0=!!CONSTANTS -ID1=BOM_LSB_FIRST -ID10=jcld11.inc -ID11=jcld12.inc -ID12=jcld14.inc -ID13=jcld15.inc -ID14=jcld6.inc -ID15=jcld7.inc -ID16=jcld8.inc -ID17=jcld9.inc -ID18=JclFileUtils.pas -ID19=jclfpc.inc -ID2=Containers.Interfaces -ID20=JclQGraphics.pas -ID21=JclStrHashMap.pas -ID22=JclStrings.pas -ID23=jedi.inc -ID24=kylix.inc -ID25=PolyPolyLineTS -ID26=RTTI -ID27=StrIToStrings@AnsiString@AnsiString@TStrings@Boolean -ID28=StrToFloatSafe@AnsiString -ID29=StrToIntSafe@AnsiString -ID3=IJclDoubleIntfMap -ID30=TJclBitmap32.SetPixel -ID31=TJclThreadPersistent.Create -ID32=TJclThreadPersistent.Destroy -ID33=TJclThreadPersistent.UpdateCount -ID34=TStreamNotifyEvent -ID4=jcl.inc -ID5=Jcl8087.pas -ID6=JclAppInst.pas -ID7=jclc6.inc -ID8=jclcs1.inc -ID9=jcld10.inc +Count=0 [Configurations\CHM\Export Symbols] Classes=1 Consts=1 ExportUndocumentedSymbols=1 ExportUnfinishedTopics=1 -Files=0 +Files=1 Functions=1 Macros=0 Member-0-0=1 @@ -23671,446 +23242,17 @@ BodySourceUseSyntaxHighlight=0 [Configurations\H2\Disabled Topics] -Count=394 -ID0=_DLLVERSIONINFO.dwPlatformId -ID1=_FILE_ZERO_DATA_INFORMATION -ID10=_IMAGE_RESOURCE_DIRECTORY -ID100=DOMAIN_ALIAS_RID_USERS -ID101=DOMAIN_GROUP_RID_ADMINS -ID102=DOMAIN_GROUP_RID_CERT_ADMINS -ID103=DOMAIN_GROUP_RID_COMPUTERS -ID104=DOMAIN_GROUP_RID_CONTROLLERS -ID105=DOMAIN_GROUP_RID_ENTERPRISE_ADMINS -ID106=DOMAIN_GROUP_RID_GUESTS -ID107=DOMAIN_GROUP_RID_POLICY_ADMINS -ID108=DOMAIN_GROUP_RID_SCHEMA_ADMINS -ID109=DOMAIN_GROUP_RID_USERS -ID11=_IMAGE_RESOURCE_DIRECTORY_ENTRY -ID110=DOMAIN_USER_RID_ADMIN -ID111=DOMAIN_USER_RID_GUEST -ID112=DOMAIN_USER_RID_KRBTGT -ID113=EJclError.CreateResRec -ID114=EJclError.CreateResRecFmt -ID115=EJclRTTI -ID116=EJclWin32Error.CreateResRec -ID117=FILE_ANY_ACCESS -ID118=FILE_ATTRIBUTE_DEVICE -ID119=FILE_ATTRIBUTE_ENCRYPTED -ID12=_IMAGE_THUNK_DATA -ID120=FILE_ATTRIBUTE_NOT_CONTENT_INDEXED -ID121=FILE_ATTRIBUTE_REPARSE_POINT -ID122=FILE_ATTRIBUTE_SPARSE_FILE -ID123=FILE_DEVICE_FILE_SYSTEM -ID124=FILE_FLAG_OPEN_REPARSE_POINT -ID125=FILE_READ_ACCESS -ID126=FILE_READ_DATA -ID127=FILE_SPECIAL_ACCESS -ID128=FILE_SUPPORTS_REPARSE_POINTS -ID129=FILE_SUPPORTS_SPARSE_FILES -ID13=_IMAGE_TLS_DIRECTORY -ID130=FILE_WRITE_ACCESS -ID131=FILE_WRITE_DATA -ID132=FloatIsZero -ID133=FSCTL_DELETE_REPARSE_POINT -ID134=FSCTL_GET_COMPRESSION -ID135=FSCTL_GET_REPARSE_POINT -ID136=FSCTL_LOCK_VOLUME -ID137=FSCTL_OPBATCH_ACK_CLOSE_PENDING -ID138=FSCTL_OPLOCK_BREAK_ACK_NO_2 -ID139=FSCTL_OPLOCK_BREAK_ACKNOWLEDGE -ID14=_MODULEINFO -ID140=FSCTL_OPLOCK_BREAK_NOTIFY -ID141=FSCTL_QUERY_ALLOCATED_RANGES -ID142=FSCTL_REQUEST_BATCH_OPLOCK -ID143=FSCTL_REQUEST_FILTER_OPLOCK -ID144=FSCTL_REQUEST_OPLOCK_LEVEL_1 -ID145=FSCTL_REQUEST_OPLOCK_LEVEL_2 -ID146=FSCTL_SET_COMPRESSION -ID147=FSCTL_SET_REPARSE_POINT -ID148=FSCTL_SET_SPARSE -ID149=FSCTL_SET_ZERO_DATA -ID15=_REPARSE_DATA_BUFFER -ID150=FSCTL_UNLOCK_VOLUME -ID151=IContextMenu2 -ID152=IJclMIDIOut.GetActiveNotes@TMIDIChannel -ID153=IJclMIDIOut.GetName -ID154=IJclMIDIOut.GetRunningStatusEnabled -ID155=IJclMIDIOut.SetRunningStatusEnabled@Boolean -ID156=IJclMultiIntfIntfMap -ID157=IMAGE_BASE_RELOCATION -ID158=IMAGE_BOUND_FORWARDER_REF -ID159=IMAGE_BOUND_IMPORT_DESCRIPTOR -ID16=_REPARSE_POINT_INFORMATION -ID160=IMAGE_COR20_HEADER -ID161=IMAGE_DEBUG_TYPE_BORLAND -ID162=IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR -ID163=IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT -ID164=IMAGE_EXPORT_DIRECTORY -ID165=IMAGE_IMPORT_BY_NAME -ID166=IMAGE_IMPORT_DESCRIPTOR -ID167=IMAGE_LOAD_CONFIG_DIRECTORY -ID168=IMAGE_ORDINAL_FLAG -ID169=IMAGE_REL_BASED_ABSOLUTE -ID17=AMD_APIC_FLAG -ID170=IMAGE_REL_BASED_DIR64 -ID171=IMAGE_REL_BASED_HIGH -ID172=IMAGE_REL_BASED_HIGH3ADJ -ID173=IMAGE_REL_BASED_HIGHADJ -ID174=IMAGE_REL_BASED_HIGHLOW -ID175=IMAGE_REL_BASED_IA64_IMM64 -ID176=IMAGE_REL_BASED_LOW -ID177=IMAGE_REL_BASED_MIPS_JMPADDR -ID178=IMAGE_REL_BASED_MIPS_JMPADDR16 -ID179=IMAGE_REL_BASED_REL32 -ID18=AMD_BIT_10 -ID180=IMAGE_REL_BASED_SECTION -ID181=IMAGE_RESOURCE_DATA_ENTRY -ID182=IMAGE_RESOURCE_DATA_IS_DIRECTORY -ID183=IMAGE_RESOURCE_DIR_STRING_U -ID184=IMAGE_RESOURCE_DIRECTORY -ID185=IMAGE_RESOURCE_DIRECTORY_ENTRY -ID186=IMAGE_RESOURCE_NAME_IS_STRING -ID187=IMAGE_SIZEOF_BASE_RELOCATION -ID188=IMAGE_THUNK_DATA -ID189=IMAGE_TLS_DIRECTORY -ID19=AMD_BIT_11 -ID190=ImgDelayDescr -ID191=IO_REPARSE_TAG_HSM -ID192=IO_REPARSE_TAG_MOUNT_POINT -ID193=IO_REPARSE_TAG_RESERVED_ONE -ID194=IO_REPARSE_TAG_RESERVED_RANGE -ID195=IO_REPARSE_TAG_RESERVED_ZERO -ID196=IO_REPARSE_TAG_SIS -ID197=IO_REPARSE_TAG_VALID_VALUES -ID198=IQueryInfo -ID199=JclDebug.pas -ID2=_IMAGE_BASE_RELOCATION -ID20=AMD_BIT_14 -ID200=JclGraphics.pas -ID201=JclHookIs -ID202=JclIsHooked -ID203=JclMidi.pas -ID204=JclNTFS.pas -ID205=JclRegistry.pas -ID206=JclUnhookIs -ID207=KLF_SETFORPROCESS -ID208=MAX_LANA -ID209=MAX_MODULE_NAME32 -ID21=AMD_BIT_16 -ID210=MAXIMUM_REPARSE_DATA_BUFFER_SIZE -ID211=METHOD_BUFFERED -ID212=METHOD_IN_DIRECT -ID213=METHOD_NEITHER -ID214=METHOD_OUT_DIRECT -ID215=NCBASTAT -ID216=NCBENUM -ID217=NCBNAMSZ -ID218=NCBRESET -ID219=NRC_GOODRET -ID22=AMD_BIT_17 -ID220=PAdapterStatus -ID221=PANonObjectHeader -ID222=PFileAllocatedRangeBuffer -ID223=PFileZeroDataInformation -ID224=PImageBaseRelocation -ID225=PImageBoundForwarderRef -ID226=PImageBoundImportDescriptor -ID227=PImageCor20Header -ID228=PImageExportDirectory -ID229=PImageImportByName -ID23=AMD_BIT_18 -ID230=PImageImportDescriptor -ID231=PImageLoadConfigDirectory -ID232=PImageResourceDataEntry -ID233=PImageResourceDirectory -ID234=PImageResourceDirectoryEntry -ID235=PImageResourceDirStringU -ID236=PImageThunkData -ID237=PImageTlsDirectory -ID238=PImgDelayDescr -ID239=PLanaEnum -ID24=AMD_BIT_19 -ID240=PModuleInfo -ID241=PNameBuffer -ID242=PNCB -ID243=POSVersionInfoEx -ID244=PPImageSectionHeader -ID245=PPSID -ID246=PReparseDataBuffer -ID247=PReparsePointInformation -ID248=REPARSE_DATA_BUFFER_HEADER_SIZE -ID249=REPARSE_GUID_DATA_BUFFER_HEADER_SIZE -ID25=AMD_BIT_20 -ID250=RT_HTML -ID251=RT_MANIFEST -ID252=SE_ASSIGNPRIMARYTOKEN_NAME -ID253=SE_AUDIT_NAME -ID254=SE_BACKUP_NAME -ID255=SE_CHANGE_NOTIFY_NAME -ID256=SE_CREATE_PAGEFILE_NAME -ID257=SE_CREATE_PERMANENT_NAME -ID258=SE_CREATE_TOKEN_NAME -ID259=SE_DEBUG_NAME -ID26=AMD_BIT_21 -ID260=SE_ENABLE_DELEGATION_NAME -ID261=SE_INC_BASE_PRIORITY_NAME -ID262=SE_INCREASE_QUOTA_NAME -ID263=SE_LOAD_DRIVER_NAME -ID264=SE_LOCK_MEMORY_NAME -ID265=SE_MACHINE_ACCOUNT_NAME -ID266=SE_OBJECT_TYPE -ID267=SE_PROF_SINGLE_PROCESS_NAME -ID268=SE_REMOTE_SHUTDOWN_NAME -ID269=SE_RESTORE_NAME -ID27=AMD_BIT_22 -ID270=SE_SECURITY_NAME -ID271=SE_SHUTDOWN_NAME -ID272=SE_SYNC_AGENT_NAME -ID273=SE_SYSTEM_ENVIRONMENT_NAME -ID274=SE_SYSTEM_PROFILE_NAME -ID275=SE_SYSTEMTIME_NAME -ID276=SE_TAKE_OWNERSHIP_NAME -ID277=SE_TCB_NAME -ID278=SE_UNDOCK_NAME -ID279=SE_UNSOLICITED_INPUT_NAME -ID28=AMD_BIT_24 -ID280=SECURITY_ANONYMOUS_LOGON_RID -ID281=SECURITY_AUTHENTICATED_USER_RID -ID282=SECURITY_BATCH_RID -ID283=SECURITY_BUILTIN_DOMAIN_RID -ID284=SECURITY_CREATOR_GROUP_RID -ID285=SECURITY_CREATOR_GROUP_SERVER_RID -ID286=SECURITY_CREATOR_OWNER_RID -ID287=SECURITY_CREATOR_OWNER_SERVER_RID -ID288=SECURITY_CREATOR_SID_AUTHORITY -ID289=SECURITY_DESCRIPTOR_MIN_LENGTH -ID29=AMD_BIT_25 -ID290=SECURITY_DESCRIPTOR_REVISION -ID291=SECURITY_DESCRIPTOR_REVISION1 -ID292=SECURITY_DIALUP_RID -ID293=SECURITY_ENTERPRISE_CONTROLLERS_RID -ID294=SECURITY_INTERACTIVE_RID -ID295=SECURITY_LOCAL_RID -ID296=SECURITY_LOCAL_SID_AUTHORITY -ID297=SECURITY_LOCAL_SYSTEM_RID -ID298=SECURITY_LOGON_IDS_RID -ID299=SECURITY_LOGON_IDS_RID_COUNT -ID3=_IMAGE_BOUND_FORWARDER_REF -ID30=AMD_BIT_26 -ID300=SECURITY_NETWORK_RID -ID301=SECURITY_NON_UNIQUE_AUTHORITY -ID302=SECURITY_NT_AUTHORITY -ID303=SECURITY_NT_NON_UNIQUE -ID304=SECURITY_NULL_RID -ID305=SECURITY_NULL_SID_AUTHORITY -ID306=SECURITY_PRINCIPAL_SELF_RID -ID307=SECURITY_PROXY_RID -ID308=SECURITY_RESTRICTED_CODE_RID -ID309=SECURITY_SERVER_LOGON_RID -ID31=AMD_BIT_27 -ID310=SECURITY_SERVICE_RID -ID311=SECURITY_TERMINAL_SERVER_RID -ID312=SECURITY_WORLD_RID -ID313=SECURITY_WORLD_SID_AUTHORITY -ID314=SID_IQueryInfo -ID315=TAdapterStatus -ID316=tagMODULEENTRY32 -ID317=TAMDSpecific.DataTLB -ID318=TAMDSpecific.InstructionTLB -ID319=TAMDSpecific.L1ICache -ID32=AMD_BIT_28 -ID320=TANonObjectHeader -ID321=TCoCreateInstanceExProc -ID322=TExprCompileParser.CompileExpr -ID323=TExprCompileParser.CompileSignedFactor -ID324=TExprCompileParser.CompileSimpleExpr -ID325=TExprCompileParser.CompileTerm -ID326=TExprEvalParser.EvalExpr -ID327=TExprEvalParser.EvalSignedFactor -ID328=TExprEvalParser.EvalSimpleExpr -ID329=TExprEvalParser.EvalTerm -ID33=AMD_BIT_29 -ID330=TFileAllocatedRangeBuffer -ID331=TFileZeroDataInformation -ID332=TH32CS_SNAPMODULE -ID333=TImageBaseRelocation -ID334=TImageBoundForwarderRef -ID335=TImageBoundImportDescriptor -ID336=TImageCor20Header -ID337=TImageExportDirectory -ID338=TImageImportByName -ID339=TImageImportDescriptor -ID34=AMD_BIT_30 -ID340=TImageLoadConfigDirectory -ID341=TImageResourceDataEntry -ID342=TImageResourceDirectory -ID343=TImageResourceDirectoryEntry -ID344=TImageResourceDirStringU -ID345=TImageThunkData -ID346=TImageTlsDirectory -ID347=TIME_ZONE_ID_DAYLIGHT -ID348=TIME_ZONE_ID_INVALID -ID349=TIME_ZONE_ID_STANDARD -ID35=AMD_BIT_31 -ID350=TIME_ZONE_ID_UNKNOWN -ID351=TImgDelayDescr -ID352=TJclBitmap32.FrameRect -ID353=TJclBitmap32.OnPixelCombine -ID354=TJclByteMap.Byte -ID355=TJclDesktopCanvas.Create -ID356=TJclDesktopCanvas.Destroy -ID357=TJclIsFunc -ID358=TJclRebaseImageInfo.NewImageBase -ID359=TJclRebaseImageInfo.NewImageSize -ID36=AMD_BIT_6 -ID360=TJclRebaseImageInfo.OldImageBase -ID361=TJclRebaseImageInfo.OldImageSize -ID362=TLanaEnum -ID363=TLoadedImage -ID364=TModuleEntry32 -ID365=TModuleInfo -ID366=TNameBuffer -ID367=TNCB -ID368=TNCBPostProc -ID369=TObjectList.Clear -ID37=AMD_CMOV_FLAG -ID370=TObjectList.Create -ID371=TObjectList.OwnsObjects -ID372=TOSVersionInfoEx -ID373=TReparseDataBuffer -ID374=TReparsePointInformation -ID375=TWideStrings.Destroy -ID376=VER_NT_DOMAIN_CONTROLLER -ID377=VER_NT_SERVER -ID378=VER_NT_WORKSTATION -ID379=VER_SUITE_BACKOFFICE -ID38=AMD_CX8_FLAG -ID380=VER_SUITE_COMMUNICATIONS -ID381=VER_SUITE_DATACENTER -ID382=VER_SUITE_EMBEDDEDNT -ID383=VER_SUITE_ENTERPRISE -ID384=VER_SUITE_PERSONAL -ID385=VER_SUITE_SERVERAPPLIANCE -ID386=VER_SUITE_SINGLEUSERTS -ID387=VER_SUITE_SMALLBUSINESS -ID388=VER_SUITE_SMALLBUSINESS_RESTRICTED -ID389=VER_SUITE_TERMINAL -ID39=AMD_DE_FLAG -ID390=Win32BackupFile -ID391=Win32DeleteFile -ID392=Win32MoveFileReplaceExisting -ID393=Win32RestoreFile -ID4=_IMAGE_BOUND_IMPORT_DESCRIPTOR -ID40=AMD_FPU_FLAG -ID41=AMD_MCE_FLAG -ID42=AMD_MMX_FLAG -ID43=AMD_MSR_FLAG -ID44=AMD_MTRR_FLAG -ID45=AMD_PGE_FLAG -ID46=AMD_PSE_FLAG -ID47=AMD_TSC_FLAG -ID48=AMD_VME_FLAG -ID49=ANON_OBJECT_HEADER -ID5=_IMAGE_EXPORT_DIRECTORY -ID50=ASTAT -ID51=BaseServices.FPCCompatibility -ID52=BaseServices.TObjectList -ID53=BIT_10 -ID54=BIT_18 -ID55=BIT_19 -ID56=BIT_20 -ID57=BIT_21 -ID58=BIT_22 -ID59=BIT_25 -ID6=_IMAGE_IMPORT_BY_NAME -ID60=BIT_26 -ID61=BIT_27 -ID62=BIT_28 -ID63=BIT_29 -ID64=BIT_30 -ID65=BIT_31 -ID66=clAqua32 -ID67=clBlack32 -ID68=clBlue32 -ID69=clDimGray32 -ID7=_IMAGE_IMPORT_DESCRIPTOR -ID70=clFuchsia32 -ID71=clGray32 -ID72=clGreen32 -ID73=clLightGray32 -ID74=clLime32 -ID75=clMaroon32 -ID76=clNavy32 -ID77=clOlive32 -ID78=clPurple32 -ID79=clRed32 -ID8=_IMAGE_RESOURCE_DATA_ENTRY -ID80=COMIMAGE_FLAGS_32BITREQUIRED -ID81=COMIMAGE_FLAGS_IL_LIBRARY -ID82=COMIMAGE_FLAGS_ILONLY -ID83=COMIMAGE_FLAGS_STRONGNAMESIGNED -ID84=COMIMAGE_FLAGS_TRACKDEBUGDATA -ID85=COMPRESSION_FORMAT_DEFAULT -ID86=COMPRESSION_FORMAT_LZNT1 -ID87=COMPRESSION_FORMAT_NONE -ID88=Containers.Associative.Multimaps -ID89=DATE_YEARMONTH -ID9=_IMAGE_RESOURCE_DIR_STRING_U -ID90=DOMAIN_ALIAS_RID_ACCOUNT_OPS -ID91=DOMAIN_ALIAS_RID_ADMINS -ID92=DOMAIN_ALIAS_RID_BACKUP_OPS -ID93=DOMAIN_ALIAS_RID_GUESTS -ID94=DOMAIN_ALIAS_RID_POWER_USERS -ID95=DOMAIN_ALIAS_RID_PREW2KCOMPACCESS -ID96=DOMAIN_ALIAS_RID_PRINT_OPS -ID97=DOMAIN_ALIAS_RID_RAS_SERVERS -ID98=DOMAIN_ALIAS_RID_REPLICATOR -ID99=DOMAIN_ALIAS_RID_SYSTEM_OPS +Count=0 [Configurations\H2\Enabled Topics] -Count=35 -ID0=!!CONSTANTS -ID1=BOM_LSB_FIRST -ID10=jcld11.inc -ID11=jcld12.inc -ID12=jcld14.inc -ID13=jcld15.inc -ID14=jcld6.inc -ID15=jcld7.inc -ID16=jcld8.inc -ID17=jcld9.inc -ID18=JclFileUtils.pas -ID19=jclfpc.inc -ID2=Containers.Interfaces -ID20=JclQGraphics.pas -ID21=JclStrHashMap.pas -ID22=JclStrings.pas -ID23=jedi.inc -ID24=kylix.inc -ID25=PolyPolyLineTS -ID26=RTTI -ID27=StrIToStrings@AnsiString@AnsiString@TStrings@Boolean -ID28=StrToFloatSafe@AnsiString -ID29=StrToIntSafe@AnsiString -ID3=IJclDoubleIntfMap -ID30=TJclBitmap32.SetPixel -ID31=TJclThreadPersistent.Create -ID32=TJclThreadPersistent.Destroy -ID33=TJclThreadPersistent.UpdateCount -ID34=TStreamNotifyEvent -ID4=jcl.inc -ID5=Jcl8087.pas -ID6=JclAppInst.pas -ID7=jclc6.inc -ID8=jclcs1.inc -ID9=jcld10.inc +Count=0 [Configurations\H2\Export Symbols] Classes=1 Consts=1 ExportUndocumentedSymbols=1 ExportUnfinishedTopics=1 -Files=0 +Files=1 Functions=1 Macros=0 Member-0-0=1 @@ -27860,446 +27002,17 @@ BodySourceUseSyntaxHighlight=0 [Configurations\HLP\Disabled Topics] -Count=394 -ID0=_DLLVERSIONINFO.dwPlatformId -ID1=_FILE_ZERO_DATA_INFORMATION -ID10=_IMAGE_RESOURCE_DIRECTORY -ID100=DOMAIN_ALIAS_RID_USERS -ID101=DOMAIN_GROUP_RID_ADMINS -ID102=DOMAIN_GROUP_RID_CERT_ADMINS -ID103=DOMAIN_GROUP_RID_COMPUTERS -ID104=DOMAIN_GROUP_RID_CONTROLLERS -ID105=DOMAIN_GROUP_RID_ENTERPRISE_ADMINS -ID106=DOMAIN_GROUP_RID_GUESTS -ID107=DOMAIN_GROUP_RID_POLICY_ADMINS -ID108=DOMAIN_GROUP_RID_SCHEMA_ADMINS -ID109=DOMAIN_GROUP_RID_USERS -ID11=_IMAGE_RESOURCE_DIRECTORY_ENTRY -ID110=DOMAIN_USER_RID_ADMIN -ID111=DOMAIN_USER_RID_GUEST -ID112=DOMAIN_USER_RID_KRBTGT -ID113=EJclError.CreateResRec -ID114=EJclError.CreateResRecFmt -ID115=EJclRTTI -ID116=EJclWin32Error.CreateResRec -ID117=FILE_ANY_ACCESS -ID118=FILE_ATTRIBUTE_DEVICE -ID119=FILE_ATTRIBUTE_ENCRYPTED -ID12=_IMAGE_THUNK_DATA -ID120=FILE_ATTRIBUTE_NOT_CONTENT_INDEXED -ID121=FILE_ATTRIBUTE_REPARSE_POINT -ID122=FILE_ATTRIBUTE_SPARSE_FILE -ID123=FILE_DEVICE_FILE_SYSTEM -ID124=FILE_FLAG_OPEN_REPARSE_POINT -ID125=FILE_READ_ACCESS -ID126=FILE_READ_DATA -ID127=FILE_SPECIAL_ACCESS -ID128=FILE_SUPPORTS_REPARSE_POINTS -ID129=FILE_SUPPORTS_SPARSE_FILES -ID13=_IMAGE_TLS_DIRECTORY -ID130=FILE_WRITE_ACCESS -ID131=FILE_WRITE_DATA -ID132=FloatIsZero -ID133=FSCTL_DELETE_REPARSE_POINT -ID134=FSCTL_GET_COMPRESSION -ID135=FSCTL_GET_REPARSE_POINT -ID136=FSCTL_LOCK_VOLUME -ID137=FSCTL_OPBATCH_ACK_CLOSE_PENDING -ID138=FSCTL_OPLOCK_BREAK_ACK_NO_2 -ID139=FSCTL_OPLOCK_BREAK_ACKNOWLEDGE -ID14=_MODULEINFO -ID140=FSCTL_OPLOCK_BREAK_NOTIFY -ID141=FSCTL_QUERY_ALLOCATED_RANGES -ID142=FSCTL_REQUEST_BATCH_OPLOCK -ID143=FSCTL_REQUEST_FILTER_OPLOCK -ID144=FSCTL_REQUEST_OPLOCK_LEVEL_1 -ID145=FSCTL_REQUEST_OPLOCK_LEVEL_2 -ID146=FSCTL_SET_COMPRESSION -ID147=FSCTL_SET_REPARSE_POINT -ID148=FSCTL_SET_SPARSE -ID149=FSCTL_SET_ZERO_DATA -ID15=_REPARSE_DATA_BUFFER -ID150=FSCTL_UNLOCK_VOLUME -ID151=IContextMenu2 -ID152=IJclMIDIOut.GetActiveNotes@TMIDIChannel -ID153=IJclMIDIOut.GetName -ID154=IJclMIDIOut.GetRunningStatusEnabled -ID155=IJclMIDIOut.SetRunningStatusEnabled@Boolean -ID156=IJclMultiIntfIntfMap -ID157=IMAGE_BASE_RELOCATION -ID158=IMAGE_BOUND_FORWARDER_REF -ID159=IMAGE_BOUND_IMPORT_DESCRIPTOR -ID16=_REPARSE_POINT_INFORMATION -ID160=IMAGE_COR20_HEADER -ID161=IMAGE_DEBUG_TYPE_BORLAND -ID162=IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR -ID163=IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT -ID164=IMAGE_EXPORT_DIRECTORY -ID165=IMAGE_IMPORT_BY_NAME -ID166=IMAGE_IMPORT_DESCRIPTOR -ID167=IMAGE_LOAD_CONFIG_DIRECTORY -ID168=IMAGE_ORDINAL_FLAG -ID169=IMAGE_REL_BASED_ABSOLUTE -ID17=AMD_APIC_FLAG -ID170=IMAGE_REL_BASED_DIR64 -ID171=IMAGE_REL_BASED_HIGH -ID172=IMAGE_REL_BASED_HIGH3ADJ -ID173=IMAGE_REL_BASED_HIGHADJ -ID174=IMAGE_REL_BASED_HIGHLOW -ID175=IMAGE_REL_BASED_IA64_IMM64 -ID176=IMAGE_REL_BASED_LOW -ID177=IMAGE_REL_BASED_MIPS_JMPADDR -ID178=IMAGE_REL_BASED_MIPS_JMPADDR16 -ID179=IMAGE_REL_BASED_REL32 -ID18=AMD_BIT_10 -ID180=IMAGE_REL_BASED_SECTION -ID181=IMAGE_RESOURCE_DATA_ENTRY -ID182=IMAGE_RESOURCE_DATA_IS_DIRECTORY -ID183=IMAGE_RESOURCE_DIR_STRING_U -ID184=IMAGE_RESOURCE_DIRECTORY -ID185=IMAGE_RESOURCE_DIRECTORY_ENTRY -ID186=IMAGE_RESOURCE_NAME_IS_STRING -ID187=IMAGE_SIZEOF_BASE_RELOCATION -ID188=IMAGE_THUNK_DATA -ID189=IMAGE_TLS_DIRECTORY -ID19=AMD_BIT_11 -ID190=ImgDelayDescr -ID191=IO_REPARSE_TAG_HSM -ID192=IO_REPARSE_TAG_MOUNT_POINT -ID193=IO_REPARSE_TAG_RESERVED_ONE -ID194=IO_REPARSE_TAG_RESERVED_RANGE -ID195=IO_REPARSE_TAG_RESERVED_ZERO -ID196=IO_REPARSE_TAG_SIS -ID197=IO_REPARSE_TAG_VALID_VALUES -ID198=IQueryInfo -ID199=JclDebug.pas -ID2=_IMAGE_BASE_RELOCATION -ID20=AMD_BIT_14 -ID200=JclGraphics.pas -ID201=JclHookIs -ID202=JclIsHooked -ID203=JclMidi.pas -ID204=JclNTFS.pas -ID205=JclRegistry.pas -ID206=JclUnhookIs -ID207=KLF_SETFORPROCESS -ID208=MAX_LANA -ID209=MAX_MODULE_NAME32 -ID21=AMD_BIT_16 -ID210=MAXIMUM_REPARSE_DATA_BUFFER_SIZE -ID211=METHOD_BUFFERED -ID212=METHOD_IN_DIRECT -ID213=METHOD_NEITHER -ID214=METHOD_OUT_DIRECT -ID215=NCBASTAT -ID216=NCBENUM -ID217=NCBNAMSZ -ID218=NCBRESET -ID219=NRC_GOODRET -ID22=AMD_BIT_17 -ID220=PAdapterStatus -ID221=PANonObjectHeader -ID222=PFileAllocatedRangeBuffer -ID223=PFileZeroDataInformation -ID224=PImageBaseRelocation -ID225=PImageBoundForwarderRef -ID226=PImageBoundImportDescriptor -ID227=PImageCor20Header -ID228=PImageExportDirectory -ID229=PImageImportByName -ID23=AMD_BIT_18 -ID230=PImageImportDescriptor -ID231=PImageLoadConfigDirectory -ID232=PImageResourceDataEntry -ID233=PImageResourceDirectory -ID234=PImageResourceDirectoryEntry -ID235=PImageResourceDirStringU -ID236=PImageThunkData -ID237=PImageTlsDirectory -ID238=PImgDelayDescr -ID239=PLanaEnum -ID24=AMD_BIT_19 -ID240=PModuleInfo -ID241=PNameBuffer -ID242=PNCB -ID243=POSVersionInfoEx -ID244=PPImageSectionHeader -ID245=PPSID -ID246=PReparseDataBuffer -ID247=PReparsePointInformation -ID248=REPARSE_DATA_BUFFER_HEADER_SIZE -ID249=REPARSE_GUID_DATA_BUFFER_HEADER_SIZE -ID25=AMD_BIT_20 -ID250=RT_HTML -ID251=RT_MANIFEST -ID252=SE_ASSIGNPRIMARYTOKEN_NAME -ID253=SE_AUDIT_NAME -ID254=SE_BACKUP_NAME -ID255=SE_CHANGE_NOTIFY_NAME -ID256=SE_CREATE_PAGEFILE_NAME -ID257=SE_CREATE_PERMANENT_NAME -ID258=SE_CREATE_TOKEN_NAME -ID259=SE_DEBUG_NAME -ID26=AMD_BIT_21 -ID260=SE_ENABLE_DELEGATION_NAME -ID261=SE_INC_BASE_PRIORITY_NAME -ID262=SE_INCREASE_QUOTA_NAME -ID263=SE_LOAD_DRIVER_NAME -ID264=SE_LOCK_MEMORY_NAME -ID265=SE_MACHINE_ACCOUNT_NAME -ID266=SE_OBJECT_TYPE -ID267=SE_PROF_SINGLE_PROCESS_NAME -ID268=SE_REMOTE_SHUTDOWN_NAME -ID269=SE_RESTORE_NAME -ID27=AMD_BIT_22 -ID270=SE_SECURITY_NAME -ID271=SE_SHUTDOWN_NAME -ID272=SE_SYNC_AGENT_NAME -ID273=SE_SYSTEM_ENVIRONMENT_NAME -ID274=SE_SYSTEM_PROFILE_NAME -ID275=SE_SYSTEMTIME_NAME -ID276=SE_TAKE_OWNERSHIP_NAME -ID277=SE_TCB_NAME -ID278=SE_UNDOCK_NAME -ID279=SE_UNSOLICITED_INPUT_NAME -ID28=AMD_BIT_24 -ID280=SECURITY_ANONYMOUS_LOGON_RID -ID281=SECURITY_AUTHENTICATED_USER_RID -ID282=SECURITY_BATCH_RID -ID283=SECURITY_BUILTIN_DOMAIN_RID -ID284=SECURITY_CREATOR_GROUP_RID -ID285=SECURITY_CREATOR_GROUP_SERVER_RID -ID286=SECURITY_CREATOR_OWNER_RID -ID287=SECURITY_CREATOR_OWNER_SERVER_RID -ID288=SECURITY_CREATOR_SID_AUTHORITY -ID289=SECURITY_DESCRIPTOR_MIN_LENGTH -ID29=AMD_BIT_25 -ID290=SECURITY_DESCRIPTOR_REVISION -ID291=SECURITY_DESCRIPTOR_REVISION1 -ID292=SECURITY_DIALUP_RID -ID293=SECURITY_ENTERPRISE_CONTROLLERS_RID -ID294=SECURITY_INTERACTIVE_RID -ID295=SECURITY_LOCAL_RID -ID296=SECURITY_LOCAL_SID_AUTHORITY -ID297=SECURITY_LOCAL_SYSTEM_RID -ID298=SECURITY_LOGON_IDS_RID -ID299=SECURITY_LOGON_IDS_RID_COUNT -ID3=_IMAGE_BOUND_FORWARDER_REF -ID30=AMD_BIT_26 -ID300=SECURITY_NETWORK_RID -ID301=SECURITY_NON_UNIQUE_AUTHORITY -ID302=SECURITY_NT_AUTHORITY -ID303=SECURITY_NT_NON_UNIQUE -ID304=SECURITY_NULL_RID -ID305=SECURITY_NULL_SID_AUTHORITY -ID306=SECURITY_PRINCIPAL_SELF_RID -ID307=SECURITY_PROXY_RID -ID308=SECURITY_RESTRICTED_CODE_RID -ID309=SECURITY_SERVER_LOGON_RID -ID31=AMD_BIT_27 -ID310=SECURITY_SERVICE_RID -ID311=SECURITY_TERMINAL_SERVER_RID -ID312=SECURITY_WORLD_RID -ID313=SECURITY_WORLD_SID_AUTHORITY -ID314=SID_IQueryInfo -ID315=TAdapterStatus -ID316=tagMODULEENTRY32 -ID317=TAMDSpecific.DataTLB -ID318=TAMDSpecific.InstructionTLB -ID319=TAMDSpecific.L1ICache -ID32=AMD_BIT_28 -ID320=TANonObjectHeader -ID321=TCoCreateInstanceExProc -ID322=TExprCompileParser.CompileExpr -ID323=TExprCompileParser.CompileSignedFactor -ID324=TExprCompileParser.CompileSimpleExpr -ID325=TExprCompileParser.CompileTerm -ID326=TExprEvalParser.EvalExpr -ID327=TExprEvalParser.EvalSignedFactor -ID328=TExprEvalParser.EvalSimpleExpr -ID329=TExprEvalParser.EvalTerm -ID33=AMD_BIT_29 -ID330=TFileAllocatedRangeBuffer -ID331=TFileZeroDataInformation -ID332=TH32CS_SNAPMODULE -ID333=TImageBaseRelocation -ID334=TImageBoundForwarderRef -ID335=TImageBoundImportDescriptor -ID336=TImageCor20Header -ID337=TImageExportDirectory -ID338=TImageImportByName -ID339=TImageImportDescriptor -ID34=AMD_BIT_30 -ID340=TImageLoadConfigDirectory -ID341=TImageResourceDataEntry -ID342=TImageResourceDirectory -ID343=TImageResourceDirectoryEntry -ID344=TImageResourceDirStringU -ID345=TImageThunkData -ID346=TImageTlsDirectory -ID347=TIME_ZONE_ID_DAYLIGHT -ID348=TIME_ZONE_ID_INVALID -ID349=TIME_ZONE_ID_STANDARD -ID35=AMD_BIT_31 -ID350=TIME_ZONE_ID_UNKNOWN -ID351=TImgDelayDescr -ID352=TJclBitmap32.FrameRect -ID353=TJclBitmap32.OnPixelCombine -ID354=TJclByteMap.Byte -ID355=TJclDesktopCanvas.Create -ID356=TJclDesktopCanvas.Destroy -ID357=TJclIsFunc -ID358=TJclRebaseImageInfo.NewImageBase -ID359=TJclRebaseImageInfo.NewImageSize -ID36=AMD_BIT_6 -ID360=TJclRebaseImageInfo.OldImageBase -ID361=TJclRebaseImageInfo.OldImageSize -ID362=TLanaEnum -ID363=TLoadedImage -ID364=TModuleEntry32 -ID365=TModuleInfo -ID366=TNameBuffer -ID367=TNCB -ID368=TNCBPostProc -ID369=TObjectList.Clear -ID37=AMD_CMOV_FLAG -ID370=TObjectList.Create -ID371=TObjectList.OwnsObjects -ID372=TOSVersionInfoEx -ID373=TReparseDataBuffer -ID374=TReparsePointInformation -ID375=TWideStrings.Destroy -ID376=VER_NT_DOMAIN_CONTROLLER -ID377=VER_NT_SERVER -ID378=VER_NT_WORKSTATION -ID379=VER_SUITE_BACKOFFICE -ID38=AMD_CX8_FLAG -ID380=VER_SUITE_COMMUNICATIONS -ID381=VER_SUITE_DATACENTER -ID382=VER_SUITE_EMBEDDEDNT -ID383=VER_SUITE_ENTERPRISE -ID384=VER_SUITE_PERSONAL -ID385=VER_SUITE_SERVERAPPLIANCE -ID386=VER_SUITE_SINGLEUSERTS -ID387=VER_SUITE_SMALLBUSINESS -ID388=VER_SUITE_SMALLBUSINESS_RESTRICTED -ID389=VER_SUITE_TERMINAL -ID39=AMD_DE_FLAG -ID390=Win32BackupFile -ID391=Win32DeleteFile -ID392=Win32MoveFileReplaceExisting -ID393=Win32RestoreFile -ID4=_IMAGE_BOUND_IMPORT_DESCRIPTOR -ID40=AMD_FPU_FLAG -ID41=AMD_MCE_FLAG -ID42=AMD_MMX_FLAG -ID43=AMD_MSR_FLAG -ID44=AMD_MTRR_FLAG -ID45=AMD_PGE_FLAG -ID46=AMD_PSE_FLAG -ID47=AMD_TSC_FLAG -ID48=AMD_VME_FLAG -ID49=ANON_OBJECT_HEADER -ID5=_IMAGE_EXPORT_DIRECTORY -ID50=ASTAT -ID51=BaseServices.FPCCompatibility -ID52=BaseServices.TObjectList -ID53=BIT_10 -ID54=BIT_18 -ID55=BIT_19 -ID56=BIT_20 -ID57=BIT_21 -ID58=BIT_22 -ID59=BIT_25 -ID6=_IMAGE_IMPORT_BY_NAME -ID60=BIT_26 -ID61=BIT_27 -ID62=BIT_28 -ID63=BIT_29 -ID64=BIT_30 -ID65=BIT_31 -ID66=clAqua32 -ID67=clBlack32 -ID68=clBlue32 -ID69=clDimGray32 -ID7=_IMAGE_IMPORT_DESCRIPTOR -ID70=clFuchsia32 -ID71=clGray32 -ID72=clGreen32 -ID73=clLightGray32 -ID74=clLime32 -ID75=clMaroon32 -ID76=clNavy32 -ID77=clOlive32 -ID78=clPurple32 -ID79=clRed32 -ID8=_IMAGE_RESOURCE_DATA_ENTRY -ID80=COMIMAGE_FLAGS_32BITREQUIRED -ID81=COMIMAGE_FLAGS_IL_LIBRARY -ID82=COMIMAGE_FLAGS_ILONLY -ID83=COMIMAGE_FLAGS_STRONGNAMESIGNED -ID84=COMIMAGE_FLAGS_TRACKDEBUGDATA -ID85=COMPRESSION_FORMAT_DEFAULT -ID86=COMPRESSION_FORMAT_LZNT1 -ID87=COMPRESSION_FORMAT_NONE -ID88=Containers.Associative.Multimaps -ID89=DATE_YEARMONTH -ID9=_IMAGE_RESOURCE_DIR_STRING_U -ID90=DOMAIN_ALIAS_RID_ACCOUNT_OPS -ID91=DOMAIN_ALIAS_RID_ADMINS -ID92=DOMAIN_ALIAS_RID_BACKUP_OPS -ID93=DOMAIN_ALIAS_RID_GUESTS -ID94=DOMAIN_ALIAS_RID_POWER_USERS -ID95=DOMAIN_ALIAS_RID_PREW2KCOMPACCESS -ID96=DOMAIN_ALIAS_RID_PRINT_OPS -ID97=DOMAIN_ALIAS_RID_RAS_SERVERS -ID98=DOMAIN_ALIAS_RID_REPLICATOR -ID99=DOMAIN_ALIAS_RID_SYSTEM_OPS +Count=0 [Configurations\HLP\Enabled Topics] -Count=35 -ID0=!!CONSTANTS -ID1=BOM_LSB_FIRST -ID10=jcld11.inc -ID11=jcld12.inc -ID12=jcld14.inc -ID13=jcld15.inc -ID14=jcld6.inc -ID15=jcld7.inc -ID16=jcld8.inc -ID17=jcld9.inc -ID18=JclFileUtils.pas -ID19=jclfpc.inc -ID2=Containers.Interfaces -ID20=JclQGraphics.pas -ID21=JclStrHashMap.pas -ID22=JclStrings.pas -ID23=jedi.inc -ID24=kylix.inc -ID25=PolyPolyLineTS -ID26=RTTI -ID27=StrIToStrings@AnsiString@AnsiString@TStrings@Boolean -ID28=StrToFloatSafe@AnsiString -ID29=StrToIntSafe@AnsiString -ID3=IJclDoubleIntfMap -ID30=TJclBitmap32.SetPixel -ID31=TJclThreadPersistent.Create -ID32=TJclThreadPersistent.Destroy -ID33=TJclThreadPersistent.UpdateCount -ID34=TStreamNotifyEvent -ID4=jcl.inc -ID5=Jcl8087.pas -ID6=JclAppInst.pas -ID7=jclc6.inc -ID8=jclcs1.inc -ID9=jcld10.inc +Count=0 [Configurations\HLP\Export Symbols] Classes=1 Consts=1 ExportUndocumentedSymbols=1 ExportUnfinishedTopics=1 -Files=0 +Files=1 Functions=1 Macros=0 Member-0-0=1 @@ -40245,446 +38958,17 @@ BodySourceUseSyntaxHighlight=0 [Configurations\HTML\Disabled Topics] -Count=394 -ID0=_DLLVERSIONINFO.dwPlatformId -ID1=_FILE_ZERO_DATA_INFORMATION -ID10=_IMAGE_RESOURCE_DIRECTORY -ID100=DOMAIN_ALIAS_RID_USERS -ID101=DOMAIN_GROUP_RID_ADMINS -ID102=DOMAIN_GROUP_RID_CERT_ADMINS -ID103=DOMAIN_GROUP_RID_COMPUTERS -ID104=DOMAIN_GROUP_RID_CONTROLLERS -ID105=DOMAIN_GROUP_RID_ENTERPRISE_ADMINS -ID106=DOMAIN_GROUP_RID_GUESTS -ID107=DOMAIN_GROUP_RID_POLICY_ADMINS -ID108=DOMAIN_GROUP_RID_SCHEMA_ADMINS -ID109=DOMAIN_GROUP_RID_USERS -ID11=_IMAGE_RESOURCE_DIRECTORY_ENTRY -ID110=DOMAIN_USER_RID_ADMIN -ID111=DOMAIN_USER_RID_GUEST -ID112=DOMAIN_USER_RID_KRBTGT -ID113=EJclError.CreateResRec -ID114=EJclError.CreateResRecFmt -ID115=EJclRTTI -ID116=EJclWin32Error.CreateResRec -ID117=FILE_ANY_ACCESS -ID118=FILE_ATTRIBUTE_DEVICE -ID119=FILE_ATTRIBUTE_ENCRYPTED -ID12=_IMAGE_THUNK_DATA -ID120=FILE_ATTRIBUTE_NOT_CONTENT_INDEXED -ID121=FILE_ATTRIBUTE_REPARSE_POINT -ID122=FILE_ATTRIBUTE_SPARSE_FILE -ID123=FILE_DEVICE_FILE_SYSTEM -ID124=FILE_FLAG_OPEN_REPARSE_POINT -ID125=FILE_READ_ACCESS -ID126=FILE_READ_DATA -ID127=FILE_SPECIAL_ACCESS -ID128=FILE_SUPPORTS_REPARSE_POINTS -ID129=FILE_SUPPORTS_SPARSE_FILES -ID13=_IMAGE_TLS_DIRECTORY -ID130=FILE_WRITE_ACCESS -ID131=FILE_WRITE_DATA -ID132=FloatIsZero -ID133=FSCTL_DELETE_REPARSE_POINT -ID134=FSCTL_GET_COMPRESSION -ID135=FSCTL_GET_REPARSE_POINT -ID136=FSCTL_LOCK_VOLUME -ID137=FSCTL_OPBATCH_ACK_CLOSE_PENDING -ID138=FSCTL_OPLOCK_BREAK_ACK_NO_2 -ID139=FSCTL_OPLOCK_BREAK_ACKNOWLEDGE -ID14=_MODULEINFO -ID140=FSCTL_OPLOCK_BREAK_NOTIFY -ID141=FSCTL_QUERY_ALLOCATED_RANGES -ID142=FSCTL_REQUEST_BATCH_OPLOCK -ID143=FSCTL_REQUEST_FILTER_OPLOCK -ID144=FSCTL_REQUEST_OPLOCK_LEVEL_1 -ID145=FSCTL_REQUEST_OPLOCK_LEVEL_2 -ID146=FSCTL_SET_COMPRESSION -ID147=FSCTL_SET_REPARSE_POINT -ID148=FSCTL_SET_SPARSE -ID149=FSCTL_SET_ZERO_DATA -ID15=_REPARSE_DATA_BUFFER -ID150=FSCTL_UNLOCK_VOLUME -ID151=IContextMenu2 -ID152=IJclMIDIOut.GetActiveNotes@TMIDIChannel -ID153=IJclMIDIOut.GetName -ID154=IJclMIDIOut.GetRunningStatusEnabled -ID155=IJclMIDIOut.SetRunningStatusEnabled@Boolean -ID156=IJclMultiIntfIntfMap -ID157=IMAGE_BASE_RELOCATION -ID158=IMAGE_BOUND_FORWARDER_REF -ID159=IMAGE_BOUND_IMPORT_DESCRIPTOR -ID16=_REPARSE_POINT_INFORMATION -ID160=IMAGE_COR20_HEADER -ID161=IMAGE_DEBUG_TYPE_BORLAND -ID162=IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR -ID163=IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT -ID164=IMAGE_EXPORT_DIRECTORY -ID165=IMAGE_IMPORT_BY_NAME -ID166=IMAGE_IMPORT_DESCRIPTOR -ID167=IMAGE_LOAD_CONFIG_DIRECTORY -ID168=IMAGE_ORDINAL_FLAG -ID169=IMAGE_REL_BASED_ABSOLUTE -ID17=AMD_APIC_FLAG -ID170=IMAGE_REL_BASED_DIR64 -ID171=IMAGE_REL_BASED_HIGH -ID172=IMAGE_REL_BASED_HIGH3ADJ -ID173=IMAGE_REL_BASED_HIGHADJ -ID174=IMAGE_REL_BASED_HIGHLOW -ID175=IMAGE_REL_BASED_IA64_IMM64 -ID176=IMAGE_REL_BASED_LOW -ID177=IMAGE_REL_BASED_MIPS_JMPADDR -ID178=IMAGE_REL_BASED_MIPS_JMPADDR16 -ID179=IMAGE_REL_BASED_REL32 -ID18=AMD_BIT_10 -ID180=IMAGE_REL_BASED_SECTION -ID181=IMAGE_RESOURCE_DATA_ENTRY -ID182=IMAGE_RESOURCE_DATA_IS_DIRECTORY -ID183=IMAGE_RESOURCE_DIR_STRING_U -ID184=IMAGE_RESOURCE_DIRECTORY -ID185=IMAGE_RESOURCE_DIRECTORY_ENTRY -ID186=IMAGE_RESOURCE_NAME_IS_STRING -ID187=IMAGE_SIZEOF_BASE_RELOCATION -ID188=IMAGE_THUNK_DATA -ID189=IMAGE_TLS_DIRECTORY -ID19=AMD_BIT_11 -ID190=ImgDelayDescr -ID191=IO_REPARSE_TAG_HSM -ID192=IO_REPARSE_TAG_MOUNT_POINT -ID193=IO_REPARSE_TAG_RESERVED_ONE -ID194=IO_REPARSE_TAG_RESERVED_RANGE -ID195=IO_REPARSE_TAG_RESERVED_ZERO -ID196=IO_REPARSE_TAG_SIS -ID197=IO_REPARSE_TAG_VALID_VALUES -ID198=IQueryInfo -ID199=JclDebug.pas -ID2=_IMAGE_BASE_RELOCATION -ID20=AMD_BIT_14 -ID200=JclGraphics.pas -ID201=JclHookIs -ID202=JclIsHooked -ID203=JclMidi.pas -ID204=JclNTFS.pas -ID205=JclRegistry.pas -ID206=JclUnhookIs -ID207=KLF_SETFORPROCESS -ID208=MAX_LANA -ID209=MAX_MODULE_NAME32 -ID21=AMD_BIT_16 -ID210=MAXIMUM_REPARSE_DATA_BUFFER_SIZE -ID211=METHOD_BUFFERED -ID212=METHOD_IN_DIRECT -ID213=METHOD_NEITHER -ID214=METHOD_OUT_DIRECT -ID215=NCBASTAT -ID216=NCBENUM -ID217=NCBNAMSZ -ID218=NCBRESET -ID219=NRC_GOODRET -ID22=AMD_BIT_17 -ID220=PAdapterStatus -ID221=PANonObjectHeader -ID222=PFileAllocatedRangeBuffer -ID223=PFileZeroDataInformation -ID224=PImageBaseRelocation -ID225=PImageBoundForwarderRef -ID226=PImageBoundImportDescriptor -ID227=PImageCor20Header -ID228=PImageExportDirectory -ID229=PImageImportByName -ID23=AMD_BIT_18 -ID230=PImageImportDescriptor -ID231=PImageLoadConfigDirectory -ID232=PImageResourceDataEntry -ID233=PImageResourceDirectory -ID234=PImageResourceDirectoryEntry -ID235=PImageResourceDirStringU -ID236=PImageThunkData -ID237=PImageTlsDirectory -ID238=PImgDelayDescr -ID239=PLanaEnum -ID24=AMD_BIT_19 -ID240=PModuleInfo -ID241=PNameBuffer -ID242=PNCB -ID243=POSVersionInfoEx -ID244=PPImageSectionHeader -ID245=PPSID -ID246=PReparseDataBuffer -ID247=PReparsePointInformation -ID248=REPARSE_DATA_BUFFER_HEADER_SIZE -ID249=REPARSE_GUID_DATA_BUFFER_HEADER_SIZE -ID25=AMD_BIT_20 -ID250=RT_HTML -ID251=RT_MANIFEST -ID252=SE_ASSIGNPRIMARYTOKEN_NAME -ID253=SE_AUDIT_NAME -ID254=SE_BACKUP_NAME -ID255=SE_CHANGE_NOTIFY_NAME -ID256=SE_CREATE_PAGEFILE_NAME -ID257=SE_CREATE_PERMANENT_NAME -ID258=SE_CREATE_TOKEN_NAME -ID259=SE_DEBUG_NAME -ID26=AMD_BIT_21 -ID260=SE_ENABLE_DELEGATION_NAME -ID261=SE_INC_BASE_PRIORITY_NAME -ID262=SE_INCREASE_QUOTA_NAME -ID263=SE_LOAD_DRIVER_NAME -ID264=SE_LOCK_MEMORY_NAME -ID265=SE_MACHINE_ACCOUNT_NAME -ID266=SE_OBJECT_TYPE -ID267=SE_PROF_SINGLE_PROCESS_NAME -ID268=SE_REMOTE_SHUTDOWN_NAME -ID269=SE_RESTORE_NAME -ID27=AMD_BIT_22 -ID270=SE_SECURITY_NAME -ID271=SE_SHUTDOWN_NAME -ID272=SE_SYNC_AGENT_NAME -ID273=SE_SYSTEM_ENVIRONMENT_NAME -ID274=SE_SYSTEM_PROFILE_NAME -ID275=SE_SYSTEMTIME_NAME -ID276=SE_TAKE_OWNERSHIP_NAME -ID277=SE_TCB_NAME -ID278=SE_UNDOCK_NAME -ID279=SE_UNSOLICITED_INPUT_NAME -ID28=AMD_BIT_24 -ID280=SECURITY_ANONYMOUS_LOGON_RID -ID281=SECURITY_AUTHENTICATED_USER_RID -ID282=SECURITY_BATCH_RID -ID283=SECURITY_BUILTIN_DOMAIN_RID -ID284=SECURITY_CREATOR_GROUP_RID -ID285=SECURITY_CREATOR_GROUP_SERVER_RID -ID286=SECURITY_CREATOR_OWNER_RID -ID287=SECURITY_CREATOR_OWNER_SERVER_RID -ID288=SECURITY_CREATOR_SID_AUTHORITY -ID289=SECURITY_DESCRIPTOR_MIN_LENGTH -ID29=AMD_BIT_25 -ID290=SECURITY_DESCRIPTOR_REVISION -ID291=SECURITY_DESCRIPTOR_REVISION1 -ID292=SECURITY_DIALUP_RID -ID293=SECURITY_ENTERPRISE_CONTROLLERS_RID -ID294=SECURITY_INTERACTIVE_RID -ID295=SECURITY_LOCAL_RID -ID296=SECURITY_LOCAL_SID_AUTHORITY -ID297=SECURITY_LOCAL_SYSTEM_RID -ID298=SECURITY_LOGON_IDS_RID -ID299=SECURITY_LOGON_IDS_RID_COUNT -ID3=_IMAGE_BOUND_FORWARDER_REF -ID30=AMD_BIT_26 -ID300=SECURITY_NETWORK_RID -ID301=SECURITY_NON_UNIQUE_AUTHORITY -ID302=SECURITY_NT_AUTHORITY -ID303=SECURITY_NT_NON_UNIQUE -ID304=SECURITY_NULL_RID -ID305=SECURITY_NULL_SID_AUTHORITY -ID306=SECURITY_PRINCIPAL_SELF_RID -ID307=SECURITY_PROXY_RID -ID308=SECURITY_RESTRICTED_CODE_RID -ID309=SECURITY_SERVER_LOGON_RID -ID31=AMD_BIT_27 -ID310=SECURITY_SERVICE_RID -ID311=SECURITY_TERMINAL_SERVER_RID -ID312=SECURITY_WORLD_RID -ID313=SECURITY_WORLD_SID_AUTHORITY -ID314=SID_IQueryInfo -ID315=TAdapterStatus -ID316=tagMODULEENTRY32 -ID317=TAMDSpecific.DataTLB -ID318=TAMDSpecific.InstructionTLB -ID319=TAMDSpecific.L1ICache -ID32=AMD_BIT_28 -ID320=TANonObjectHeader -ID321=TCoCreateInstanceExProc -ID322=TExprCompileParser.CompileExpr -ID323=TExprCompileParser.CompileSignedFactor -ID324=TExprCompileParser.CompileSimpleExpr -ID325=TExprCompileParser.CompileTerm -ID326=TExprEvalParser.EvalExpr -ID327=TExprEvalParser.EvalSignedFactor -ID328=TExprEvalParser.EvalSimpleExpr -ID329=TExprEvalParser.EvalTerm -ID33=AMD_BIT_29 -ID330=TFileAllocatedRangeBuffer -ID331=TFileZeroDataInformation -ID332=TH32CS_SNAPMODULE -ID333=TImageBaseRelocation -ID334=TImageBoundForwarderRef -ID335=TImageBoundImportDescriptor -ID336=TImageCor20Header -ID337=TImageExportDirectory -ID338=TImageImportByName -ID339=TImageImportDescriptor -ID34=AMD_BIT_30 -ID340=TImageLoadConfigDirectory -ID341=TImageResourceDataEntry -ID342=TImageResourceDirectory -ID343=TImageResourceDirectoryEntry -ID344=TImageResourceDirStringU -ID345=TImageThunkData -ID346=TImageTlsDirectory -ID347=TIME_ZONE_ID_DAYLIGHT -ID348=TIME_ZONE_ID_INVALID -ID349=TIME_ZONE_ID_STANDARD -ID35=AMD_BIT_31 -ID350=TIME_ZONE_ID_UNKNOWN -ID351=TImgDelayDescr -ID352=TJclBitmap32.FrameRect -ID353=TJclBitmap32.OnPixelCombine -ID354=TJclByteMap.Byte -ID355=TJclDesktopCanvas.Create -ID356=TJclDesktopCanvas.Destroy -ID357=TJclIsFunc -ID358=TJclRebaseImageInfo.NewImageBase -ID359=TJclRebaseImageInfo.NewImageSize -ID36=AMD_BIT_6 -ID360=TJclRebaseImageInfo.OldImageBase -ID361=TJclRebaseImageInfo.OldImageSize -ID362=TLanaEnum -ID363=TLoadedImage -ID364=TModuleEntry32 -ID365=TModuleInfo -ID366=TNameBuffer -ID367=TNCB -ID368=TNCBPostProc -ID369=TObjectList.Clear -ID37=AMD_CMOV_FLAG -ID370=TObjectList.Create -ID371=TObjectList.OwnsObjects -ID372=TOSVersionInfoEx -ID373=TReparseDataBuffer -ID374=TReparsePointInformation -ID375=TWideStrings.Destroy -ID376=VER_NT_DOMAIN_CONTROLLER -ID377=VER_NT_SERVER -ID378=VER_NT_WORKSTATION -ID379=VER_SUITE_BACKOFFICE -ID38=AMD_CX8_FLAG -ID380=VER_SUITE_COMMUNICATIONS -ID381=VER_SUITE_DATACENTER -ID382=VER_SUITE_EMBEDDEDNT -ID383=VER_SUITE_ENTERPRISE -ID384=VER_SUITE_PERSONAL -ID385=VER_SUITE_SERVERAPPLIANCE -ID386=VER_SUITE_SINGLEUSERTS -ID387=VER_SUITE_SMALLBUSINESS -ID388=VER_SUITE_SMALLBUSINESS_RESTRICTED -ID389=VER_SUITE_TERMINAL -ID39=AMD_DE_FLAG -ID390=Win32BackupFile -ID391=Win32DeleteFile -ID392=Win32MoveFileReplaceExisting -ID393=Win32RestoreFile -ID4=_IMAGE_BOUND_IMPORT_DESCRIPTOR -ID40=AMD_FPU_FLAG -ID41=AMD_MCE_FLAG -ID42=AMD_MMX_FLAG -ID43=AMD_MSR_FLAG -ID44=AMD_MTRR_FLAG -ID45=AMD_PGE_FLAG -ID46=AMD_PSE_FLAG -ID47=AMD_TSC_FLAG -ID48=AMD_VME_FLAG -ID49=ANON_OBJECT_HEADER -ID5=_IMAGE_EXPORT_DIRECTORY -ID50=ASTAT -ID51=BaseServices.FPCCompatibility -ID52=BaseServices.TObjectList -ID53=BIT_10 -ID54=BIT_18 -ID55=BIT_19 -ID56=BIT_20 -ID57=BIT_21 -ID58=BIT_22 -ID59=BIT_25 -ID6=_IMAGE_IMPORT_BY_NAME -ID60=BIT_26 -ID61=BIT_27 -ID62=BIT_28 -ID63=BIT_29 -ID64=BIT_30 -ID65=BIT_31 -ID66=clAqua32 -ID67=clBlack32 -ID68=clBlue32 -ID69=clDimGray32 -ID7=_IMAGE_IMPORT_DESCRIPTOR -ID70=clFuchsia32 -ID71=clGray32 -ID72=clGreen32 -ID73=clLightGray32 -ID74=clLime32 -ID75=clMaroon32 -ID76=clNavy32 -ID77=clOlive32 -ID78=clPurple32 -ID79=clRed32 -ID8=_IMAGE_RESOURCE_DATA_ENTRY -ID80=COMIMAGE_FLAGS_32BITREQUIRED -ID81=COMIMAGE_FLAGS_IL_LIBRARY -ID82=COMIMAGE_FLAGS_ILONLY -ID83=COMIMAGE_FLAGS_STRONGNAMESIGNED -ID84=COMIMAGE_FLAGS_TRACKDEBUGDATA -ID85=COMPRESSION_FORMAT_DEFAULT -ID86=COMPRESSION_FORMAT_LZNT1 -ID87=COMPRESSION_FORMAT_NONE -ID88=Containers.Associative.Multimaps -ID89=DATE_YEARMONTH -ID9=_IMAGE_RESOURCE_DIR_STRING_U -ID90=DOMAIN_ALIAS_RID_ACCOUNT_OPS -ID91=DOMAIN_ALIAS_RID_ADMINS -ID92=DOMAIN_ALIAS_RID_BACKUP_OPS -ID93=DOMAIN_ALIAS_RID_GUESTS -ID94=DOMAIN_ALIAS_RID_POWER_USERS -ID95=DOMAIN_ALIAS_RID_PREW2KCOMPACCESS -ID96=DOMAIN_ALIAS_RID_PRINT_OPS -ID97=DOMAIN_ALIAS_RID_RAS_SERVERS -ID98=DOMAIN_ALIAS_RID_REPLICATOR -ID99=DOMAIN_ALIAS_RID_SYSTEM_OPS +Count=0 [Configurations\HTML\Enabled Topics] -Count=35 -ID0=!!CONSTANTS -ID1=BOM_LSB_FIRST -ID10=jcld11.inc -ID11=jcld12.inc -ID12=jcld14.inc -ID13=jcld15.inc -ID14=jcld6.inc -ID15=jcld7.inc -ID16=jcld8.inc -ID17=jcld9.inc -ID18=JclFileUtils.pas -ID19=jclfpc.inc -ID2=Containers.Interfaces -ID20=JclQGraphics.pas -ID21=JclStrHashMap.pas -ID22=JclStrings.pas -ID23=jedi.inc -ID24=kylix.inc -ID25=PolyPolyLineTS -ID26=RTTI -ID27=StrIToStrings@AnsiString@AnsiString@TStrings@Boolean -ID28=StrToFloatSafe@AnsiString -ID29=StrToIntSafe@AnsiString -ID3=IJclDoubleIntfMap -ID30=TJclBitmap32.SetPixel -ID31=TJclThreadPersistent.Create -ID32=TJclThreadPersistent.Destroy -ID33=TJclThreadPersistent.UpdateCount -ID34=TStreamNotifyEvent -ID4=jcl.inc -ID5=Jcl8087.pas -ID6=JclAppInst.pas -ID7=jclc6.inc -ID8=jclcs1.inc -ID9=jcld10.inc +Count=0 [Configurations\HTML\Export Symbols] Classes=1 Consts=1 ExportUndocumentedSymbols=1 ExportUnfinishedTopics=1 -Files=0 +Files=1 Functions=1 Macros=0 Member-0-0=1 @@ -50682,42 +48966,10 @@ BodySourceUseSyntaxHighlight=0 [Configurations\PDF\Disabled Topics] -Count=13 -ID0=IJclMultiIntfIntfMap -ID1=TExprCompileParser.CompileExpr -ID10=TJclRebaseImageInfo.NewImageSize -ID11=TJclRebaseImageInfo.OldImageBase -ID12=TJclRebaseImageInfo.OldImageSize -ID2=TExprCompileParser.CompileSignedFactor -ID3=TExprCompileParser.CompileSimpleExpr -ID4=TExprCompileParser.CompileTerm -ID5=TExprEvalParser.EvalExpr -ID6=TExprEvalParser.EvalSignedFactor -ID7=TExprEvalParser.EvalSimpleExpr -ID8=TExprEvalParser.EvalTerm -ID9=TJclRebaseImageInfo.NewImageBase +Count=0 [Configurations\PDF\Enabled Topics] -Count=19 -ID0=!!CONSTANTS -ID1=Containers.Interfaces -ID10=jcld15.inc -ID11=jcld6.inc -ID12=jcld7.inc -ID13=jcld8.inc -ID14=jcld9.inc -ID15=jclfpc.inc -ID16=jedi.inc -ID17=kylix.inc -ID18=TStreamNotifyEvent -ID2=IJclDoubleIntfMap -ID3=jcl.inc -ID4=jclc6.inc -ID5=jclcs1.inc -ID6=jcld10.inc -ID7=jcld11.inc -ID8=jcld12.inc -ID9=jcld14.inc +Count=0 [Configurations\PDF\Export Symbols] Classes=1 @@ -50726,7 +48978,7 @@ ExportUnfinishedTopics=1 Files=1 Functions=1 -Macros=1 +Macros=0 Member-0-0=1 Member-0-1=0 Member-0-2=1 @@ -51911,446 +50163,17 @@ BodySourceUseSyntaxHighlight=0 [Configurations\XML\Disabled Topics] -Count=394 -ID0=_DLLVERSIONINFO.dwPlatformId -ID1=_FILE_ZERO_DATA_INFORMATION -ID10=_IMAGE_RESOURCE_DIRECTORY -ID100=DOMAIN_ALIAS_RID_USERS -ID101=DOMAIN_GROUP_RID_ADMINS -ID102=DOMAIN_GROUP_RID_CERT_ADMINS -ID103=DOMAIN_GROUP_RID_COMPUTERS -ID104=DOMAIN_GROUP_RID_CONTROLLERS -ID105=DOMAIN_GROUP_RID_ENTERPRISE_ADMINS -ID106=DOMAIN_GROUP_RID_GUESTS -ID107=DOMAIN_GROUP_RID_POLICY_ADMINS -ID108=DOMAIN_GROUP_RID_SCHEMA_ADMINS -ID109=DOMAIN_GROUP_RID_USERS -ID11=_IMAGE_RESOURCE_DIRECTORY_ENTRY -ID110=DOMAIN_USER_RID_ADMIN -ID111=DOMAIN_USER_RID_GUEST -ID112=DOMAIN_USER_RID_KRBTGT -ID113=EJclError.CreateResRec -ID114=EJclError.CreateResRecFmt -ID115=EJclRTTI -ID116=EJclWin32Error.CreateResRec -ID117=FILE_ANY_ACCESS -ID118=FILE_ATTRIBUTE_DEVICE -ID119=FILE_ATTRIBUTE_ENCRYPTED -ID12=_IMAGE_THUNK_DATA -ID120=FILE_ATTRIBUTE_NOT_CONTENT_INDEXED -ID121=FILE_ATTRIBUTE_REPARSE_POINT -ID122=FILE_ATTRIBUTE_SPARSE_FILE -ID123=FILE_DEVICE_FILE_SYSTEM -ID124=FILE_FLAG_OPEN_REPARSE_POINT -ID125=FILE_READ_ACCESS -ID126=FILE_READ_DATA -ID127=FILE_SPECIAL_ACCESS -ID128=FILE_SUPPORTS_REPARSE_POINTS -ID129=FILE_SUPPORTS_SPARSE_FILES -ID13=_IMAGE_TLS_DIRECTORY -ID130=FILE_WRITE_ACCESS -ID131=FILE_WRITE_DATA -ID132=FloatIsZero -ID133=FSCTL_DELETE_REPARSE_POINT -ID134=FSCTL_GET_COMPRESSION -ID135=FSCTL_GET_REPARSE_POINT -ID136=FSCTL_LOCK_VOLUME -ID137=FSCTL_OPBATCH_ACK_CLOSE_PENDING -ID138=FSCTL_OPLOCK_BREAK_ACK_NO_2 -ID139=FSCTL_OPLOCK_BREAK_ACKNOWLEDGE -ID14=_MODULEINFO -ID140=FSCTL_OPLOCK_BREAK_NOTIFY -ID141=FSCTL_QUERY_ALLOCATED_RANGES -ID142=FSCTL_REQUEST_BATCH_OPLOCK -ID143=FSCTL_REQUEST_FILTER_OPLOCK -ID144=FSCTL_REQUEST_OPLOCK_LEVEL_1 -ID145=FSCTL_REQUEST_OPLOCK_LEVEL_2 -ID146=FSCTL_SET_COMPRESSION -ID147=FSCTL_SET_REPARSE_POINT -ID148=FSCTL_SET_SPARSE -ID149=FSCTL_SET_ZERO_DATA -ID15=_REPARSE_DATA_BUFFER -ID150=FSCTL_UNLOCK_VOLUME -ID151=IContextMenu2 -ID152=IJclMIDIOut.GetActiveNotes@TMIDIChannel -ID153=IJclMIDIOut.GetName -ID154=IJclMIDIOut.GetRunningStatusEnabled -ID155=IJclMIDIOut.SetRunningStatusEnabled@Boolean -ID156=IJclMultiIntfIntfMap -ID157=IMAGE_BASE_RELOCATION -ID158=IMAGE_BOUND_FORWARDER_REF -ID159=IMAGE_BOUND_IMPORT_DESCRIPTOR -ID16=_REPARSE_POINT_INFORMATION -ID160=IMAGE_COR20_HEADER -ID161=IMAGE_DEBUG_TYPE_BORLAND -ID162=IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR -ID163=IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT -ID164=IMAGE_EXPORT_DIRECTORY -ID165=IMAGE_IMPORT_BY_NAME -ID166=IMAGE_IMPORT_DESCRIPTOR -ID167=IMAGE_LOAD_CONFIG_DIRECTORY -ID168=IMAGE_ORDINAL_FLAG -ID169=IMAGE_REL_BASED_ABSOLUTE -ID17=AMD_APIC_FLAG -ID170=IMAGE_REL_BASED_DIR64 -ID171=IMAGE_REL_BASED_HIGH -ID172=IMAGE_REL_BASED_HIGH3ADJ -ID173=IMAGE_REL_BASED_HIGHADJ -ID174=IMAGE_REL_BASED_HIGHLOW -ID175=IMAGE_REL_BASED_IA64_IMM64 -ID176=IMAGE_REL_BASED_LOW -ID177=IMAGE_REL_BASED_MIPS_JMPADDR -ID178=IMAGE_REL_BASED_MIPS_JMPADDR16 -ID179=IMAGE_REL_BASED_REL32 -ID18=AMD_BIT_10 -ID180=IMAGE_REL_BASED_SECTION -ID181=IMAGE_RESOURCE_DATA_ENTRY -ID182=IMAGE_RESOURCE_DATA_IS_DIRECTORY -ID183=IMAGE_RESOURCE_DIR_STRING_U -ID184=IMAGE_RESOURCE_DIRECTORY -ID185=IMAGE_RESOURCE_DIRECTORY_ENTRY -ID186=IMAGE_RESOURCE_NAME_IS_STRING -ID187=IMAGE_SIZEOF_BASE_RELOCATION -ID188=IMAGE_THUNK_DATA -ID189=IMAGE_TLS_DIRECTORY -ID19=AMD_BIT_11 -ID190=ImgDelayDescr -ID191=IO_REPARSE_TAG_HSM -ID192=IO_REPARSE_TAG_MOUNT_POINT -ID193=IO_REPARSE_TAG_RESERVED_ONE -ID194=IO_REPARSE_TAG_RESERVED_RANGE -ID195=IO_REPARSE_TAG_RESERVED_ZERO -ID196=IO_REPARSE_TAG_SIS -ID197=IO_REPARSE_TAG_VALID_VALUES -ID198=IQueryInfo -ID199=JclDebug.pas -ID2=_IMAGE_BASE_RELOCATION -ID20=AMD_BIT_14 -ID200=JclGraphics.pas -ID201=JclHookIs -ID202=JclIsHooked -ID203=JclMidi.pas -ID204=JclNTFS.pas -ID205=JclRegistry.pas -ID206=JclUnhookIs -ID207=KLF_SETFORPROCESS -ID208=MAX_LANA -ID209=MAX_MODULE_NAME32 -ID21=AMD_BIT_16 -ID210=MAXIMUM_REPARSE_DATA_BUFFER_SIZE -ID211=METHOD_BUFFERED -ID212=METHOD_IN_DIRECT -ID213=METHOD_NEITHER -ID214=METHOD_OUT_DIRECT -ID215=NCBASTAT -ID216=NCBENUM -ID217=NCBNAMSZ -ID218=NCBRESET -ID219=NRC_GOODRET -ID22=AMD_BIT_17 -ID220=PAdapterStatus -ID221=PANonObjectHeader -ID222=PFileAllocatedRangeBuffer -ID223=PFileZeroDataInformation -ID224=PImageBaseRelocation -ID225=PImageBoundForwarderRef -ID226=PImageBoundImportDescriptor -ID227=PImageCor20Header -ID228=PImageExportDirectory -ID229=PImageImportByName -ID23=AMD_BIT_18 -ID230=PImageImportDescriptor -ID231=PImageLoadConfigDirectory -ID232=PImageResourceDataEntry -ID233=PImageResourceDirectory -ID234=PImageResourceDirectoryEntry -ID235=PImageResourceDirStringU -ID236=PImageThunkData -ID237=PImageTlsDirectory -ID238=PImgDelayDescr -ID239=PLanaEnum -ID24=AMD_BIT_19 -ID240=PModuleInfo -ID241=PNameBuffer -ID242=PNCB -ID243=POSVersionInfoEx -ID244=PPImageSectionHeader -ID245=PPSID -ID246=PReparseDataBuffer -ID247=PReparsePointInformation -ID248=REPARSE_DATA_BUFFER_HEADER_SIZE -ID249=REPARSE_GUID_DATA_BUFFER_HEADER_SIZE -ID25=AMD_BIT_20 -ID250=RT_HTML -ID251=RT_MANIFEST -ID252=SE_ASSIGNPRIMARYTOKEN_NAME -ID253=SE_AUDIT_NAME -ID254=SE_BACKUP_NAME -ID255=SE_CHANGE_NOTIFY_NAME -ID256=SE_CREATE_PAGEFILE_NAME -ID257=SE_CREATE_PERMANENT_NAME -ID258=SE_CREATE_TOKEN_NAME -ID259=SE_DEBUG_NAME -ID26=AMD_BIT_21 -ID260=SE_ENABLE_DELEGATION_NAME -ID261=SE_INC_BASE_PRIORITY_NAME -ID262=SE_INCREASE_QUOTA_NAME -ID263=SE_LOAD_DRIVER_NAME -ID264=SE_LOCK_MEMORY_NAME -ID265=SE_MACHINE_ACCOUNT_NAME -ID266=SE_OBJECT_TYPE -ID267=SE_PROF_SINGLE_PROCESS_NAME -ID268=SE_REMOTE_SHUTDOWN_NAME -ID269=SE_RESTORE_NAME -ID27=AMD_BIT_22 -ID270=SE_SECURITY_NAME -ID271=SE_SHUTDOWN_NAME -ID272=SE_SYNC_AGENT_NAME -ID273=SE_SYSTEM_ENVIRONMENT_NAME -ID274=SE_SYSTEM_PROFILE_NAME -ID275=SE_SYSTEMTIME_NAME -ID276=SE_TAKE_OWNERSHIP_NAME -ID277=SE_TCB_NAME -ID278=SE_UNDOCK_NAME -ID279=SE_UNSOLICITED_INPUT_NAME -ID28=AMD_BIT_24 -ID280=SECURITY_ANONYMOUS_LOGON_RID -ID281=SECURITY_AUTHENTICATED_USER_RID -ID282=SECURITY_BATCH_RID -ID283=SECURITY_BUILTIN_DOMAIN_RID -ID284=SECURITY_CREATOR_GROUP_RID -ID285=SECURITY_CREATOR_GROUP_SERVER_RID -ID286=SECURITY_CREATOR_OWNER_RID -ID287=SECURITY_CREATOR_OWNER_SERVER_RID -ID288=SECURITY_CREATOR_SID_AUTHORITY -ID289=SECURITY_DESCRIPTOR_MIN_LENGTH -ID29=AMD_BIT_25 -ID290=SECURITY_DESCRIPTOR_REVISION -ID291=SECURITY_DESCRIPTOR_REVISION1 -ID292=SECURITY_DIALUP_RID -ID293=SECURITY_ENTERPRISE_CONTROLLERS_RID -ID294=SECURITY_INTERACTIVE_RID -ID295=SECURITY_LOCAL_RID -ID296=SECURITY_LOCAL_SID_AUTHORITY -ID297=SECURITY_LOCAL_SYSTEM_RID -ID298=SECURITY_LOGON_IDS_RID -ID299=SECURITY_LOGON_IDS_RID_COUNT -ID3=_IMAGE_BOUND_FORWARDER_REF -ID30=AMD_BIT_26 -ID300=SECURITY_NETWORK_RID -ID301=SECURITY_NON_UNIQUE_AUTHORITY -ID302=SECURITY_NT_AUTHORITY -ID303=SECURITY_NT_NON_UNIQUE -ID304=SECURITY_NULL_RID -ID305=SECURITY_NULL_SID_AUTHORITY -ID306=SECURITY_PRINCIPAL_SELF_RID -ID307=SECURITY_PROXY_RID -ID308=SECURITY_RESTRICTED_CODE_RID -ID309=SECURITY_SERVER_LOGON_RID -ID31=AMD_BIT_27 -ID310=SECURITY_SERVICE_RID -ID311=SECURITY_TERMINAL_SERVER_RID -ID312=SECURITY_WORLD_RID -ID313=SECURITY_WORLD_SID_AUTHORITY -ID314=SID_IQueryInfo -ID315=TAdapterStatus -ID316=tagMODULEENTRY32 -ID317=TAMDSpecific.DataTLB -ID318=TAMDSpecific.InstructionTLB -ID319=TAMDSpecific.L1ICache -ID32=AMD_BIT_28 -ID320=TANonObjectHeader -ID321=TCoCreateInstanceExProc -ID322=TExprCompileParser.CompileExpr -ID323=TExprCompileParser.CompileSignedFactor -ID324=TExprCompileParser.CompileSimpleExpr -ID325=TExprCompileParser.CompileTerm -ID326=TExprEvalParser.EvalExpr -ID327=TExprEvalParser.EvalSignedFactor -ID328=TExprEvalParser.EvalSimpleExpr -ID329=TExprEvalParser.EvalTerm -ID33=AMD_BIT_29 -ID330=TFileAllocatedRangeBuffer -ID331=TFileZeroDataInformation -ID332=TH32CS_SNAPMODULE -ID333=TImageBaseRelocation -ID334=TImageBoundForwarderRef -ID335=TImageBoundImportDescriptor -ID336=TImageCor20Header -ID337=TImageExportDirectory -ID338=TImageImportByName -ID339=TImageImportDescriptor -ID34=AMD_BIT_30 -ID340=TImageLoadConfigDirectory -ID341=TImageResourceDataEntry -ID342=TImageResourceDirectory -ID343=TImageResourceDirectoryEntry -ID344=TImageResourceDirStringU -ID345=TImageThunkData -ID346=TImageTlsDirectory -ID347=TIME_ZONE_ID_DAYLIGHT -ID348=TIME_ZONE_ID_INVALID -ID349=TIME_ZONE_ID_STANDARD -ID35=AMD_BIT_31 -ID350=TIME_ZONE_ID_UNKNOWN -ID351=TImgDelayDescr -ID352=TJclBitmap32.FrameRect -ID353=TJclBitmap32.OnPixelCombine -ID354=TJclByteMap.Byte -ID355=TJclDesktopCanvas.Create -ID356=TJclDesktopCanvas.Destroy -ID357=TJclIsFunc -ID358=TJclRebaseImageInfo.NewImageBase -ID359=TJclRebaseImageInfo.NewImageSize -ID36=AMD_BIT_6 -ID360=TJclRebaseImageInfo.OldImageBase -ID361=TJclRebaseImageInfo.OldImageSize -ID362=TLanaEnum -ID363=TLoadedImage -ID364=TModuleEntry32 -ID365=TModuleInfo -ID366=TNameBuffer -ID367=TNCB -ID368=TNCBPostProc -ID369=TObjectList.Clear -ID37=AMD_CMOV_FLAG -ID370=TObjectList.Create -ID371=TObjectList.OwnsObjects -ID372=TOSVersionInfoEx -ID373=TReparseDataBuffer -ID374=TReparsePointInformation -ID375=TWideStrings.Destroy -ID376=VER_NT_DOMAIN_CONTROLLER -ID377=VER_NT_SERVER -ID378=VER_NT_WORKSTATION -ID379=VER_SUITE_BACKOFFICE -ID38=AMD_CX8_FLAG -ID380=VER_SUITE_COMMUNICATIONS -ID381=VER_SUITE_DATACENTER -ID382=VER_SUITE_EMBEDDEDNT -ID383=VER_SUITE_ENTERPRISE -ID384=VER_SUITE_PERSONAL -ID385=VER_SUITE_SERVERAPPLIANCE -ID386=VER_SUITE_SINGLEUSERTS -ID387=VER_SUITE_SMALLBUSINESS -ID388=VER_SUITE_SMALLBUSINESS_RESTRICTED -ID389=VER_SUITE_TERMINAL -ID39=AMD_DE_FLAG -ID390=Win32BackupFile -ID391=Win32DeleteFile -ID392=Win32MoveFileReplaceExisting -ID393=Win32RestoreFile -ID4=_IMAGE_BOUND_IMPORT_DESCRIPTOR -ID40=AMD_FPU_FLAG -ID41=AMD_MCE_FLAG -ID42=AMD_MMX_FLAG -ID43=AMD_MSR_FLAG -ID44=AMD_MTRR_FLAG -ID45=AMD_PGE_FLAG -ID46=AMD_PSE_FLAG -ID47=AMD_TSC_FLAG -ID48=AMD_VME_FLAG -ID49=ANON_OBJECT_HEADER -ID5=_IMAGE_EXPORT_DIRECTORY -ID50=ASTAT -ID51=BaseServices.FPCCompatibility -ID52=BaseServices.TObjectList -ID53=BIT_10 -ID54=BIT_18 -ID55=BIT_19 -ID56=BIT_20 -ID57=BIT_21 -ID58=BIT_22 -ID59=BIT_25 -ID6=_IMAGE_IMPORT_BY_NAME -ID60=BIT_26 -ID61=BIT_27 -ID62=BIT_28 -ID63=BIT_29 -ID64=BIT_30 -ID65=BIT_31 -ID66=clAqua32 -ID67=clBlack32 -ID68=clBlue32 -ID69=clDimGray32 -ID7=_IMAGE_IMPORT_DESCRIPTOR -ID70=clFuchsia32 -ID71=clGray32 -ID72=clGreen32 -ID73=clLightGray32 -ID74=clLime32 -ID75=clMaroon32 -ID76=clNavy32 -ID77=clOlive32 -ID78=clPurple32 -ID79=clRed32 -ID8=_IMAGE_RESOURCE_DATA_ENTRY -ID80=COMIMAGE_FLAGS_32BITREQUIRED -ID81=COMIMAGE_FLAGS_IL_LIBRARY -ID82=COMIMAGE_FLAGS_ILONLY -ID83=COMIMAGE_FLAGS_STRONGNAMESIGNED -ID84=COMIMAGE_FLAGS_TRACKDEBUGDATA -ID85=COMPRESSION_FORMAT_DEFAULT -ID86=COMPRESSION_FORMAT... [truncated message content] |
From: <ou...@us...> - 2010-12-07 16:40:18
|
Revision: 3425 http://jcl.svn.sourceforge.net/jcl/?rev=3425&view=rev Author: outchy Date: 2010-12-07 16:40:12 +0000 (Tue, 07 Dec 2010) Log Message: ----------- All JCL exceptions should inherit from JclBase.EJclError. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppLexer.pas trunk/jcl/devtools/jpp/JppMain.pas trunk/jcl/devtools/jpp/JppParser.pas trunk/jcl/devtools/jpp/JppState.pas trunk/jcl/experts/common/JclOtaUtils.pas trunk/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas trunk/jcl/source/common/JclStringLists.pas trunk/jcl/source/vcl/JclVersionControl.pas trunk/jcl/source/vcl/JclVersionCtrlCVSImpl.pas trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas trunk/jcl/source/windows/JclDotNet.pas trunk/jcl/source/windows/JclTimeZones.pas Modified: trunk/jcl/devtools/jpp/JppLexer.pas =================================================================== --- trunk/jcl/devtools/jpp/JppLexer.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/devtools/jpp/JppLexer.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -57,7 +57,7 @@ JclUnitVersioning, {$ENDIF UNITVERSIONING} SysUtils, Classes, - JclStrHashMap, JclStrings; + JclBase, JclStrHashMap, JclStrings; type TJppToken = (ptEof, ptComment, ptText, ptEol, @@ -68,7 +68,7 @@ // same as $DEFINE and $UNDEF but they will not be written to the final file ptJppDefine, ptJppUndef); - EJppLexerError = class(Exception); + EJppLexerError = class(EJclError); TJppLexer = class private Modified: trunk/jcl/devtools/jpp/JppMain.pas =================================================================== --- trunk/jcl/devtools/jpp/JppMain.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/devtools/jpp/JppMain.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -47,6 +47,7 @@ uses SysUtils, Classes, + JclBase, JclFileUtils, JclStrings, JclStreams, @@ -199,7 +200,7 @@ while (Result^ <> #0) and (Result^ <> '"') do Inc(Result); if Result^ = #0 then - raise Exception.Create('Unterminated string'); + raise EJclError.Create('Unterminated string'); Inc(Result); // skip over final " SetString(AStr, cp, Result - cp); end @@ -355,7 +356,7 @@ ChangeFileExt(NewName, ProcessedExtension); Process(State, FileName, NewName); except - on e: Exception do + on e: EJclError do Writeln(Format('Error: %s %s', [e.Message, FileName])); end; end Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -51,10 +51,10 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JppState, JppLexer; + JclBase, JppState, JppLexer; type - EPppParserError = class(Exception); + EPppParserError = class(EJclError); TJppParser = class private @@ -114,7 +114,7 @@ implementation uses - JclBase, JclStrings, JclStreams, JclSysUtils; + JclStrings, JclStreams, JclSysUtils; {$IFDEF MSWINDOWS} const Modified: trunk/jcl/devtools/jpp/JppState.pas =================================================================== --- trunk/jcl/devtools/jpp/JppState.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/devtools/jpp/JppState.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -55,7 +55,7 @@ JclBase, JclContainerIntf; type - EPppState = class(Exception); + EPppState = class(EJclError); TPppOption = (poProcessIncludes, poProcessDefines, poStripComments, poProcessMacros, poProcessValues, poNoWarningHeader); Modified: trunk/jcl/experts/common/JclOtaUtils.pas =================================================================== --- trunk/jcl/experts/common/JclOtaUtils.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/experts/common/JclOtaUtils.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -82,7 +82,7 @@ // - notifier callback functions // - ... (non exhaustive list) - EJclExpertException = class (Exception) + EJclExpertException = class (EJclError) {$IFDEF MSWINDOWS} private FStackInfo: TJclStackInfoList; Modified: trunk/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas =================================================================== --- trunk/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -184,7 +184,7 @@ wrSignaled: Result := True; wrTimeout: - raise Exception.Create(RsEnterMutexTimeout); + raise EJclError.Create(RsEnterMutexTimeout); else Result := False; end; Modified: trunk/jcl/source/common/JclStringLists.pas =================================================================== --- trunk/jcl/source/common/JclStringLists.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/source/common/JclStringLists.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -55,6 +55,8 @@ {$ENDIF FPC} type + EJclStringListError = class(EJclError); + IJclStringList = interface; TJclStringListObjectsMode = (omNone, omObjects, omVariants, omInterfaces); @@ -938,7 +940,7 @@ begin if FObjectsMode <> omNone then begin - raise Exception.CreateFmt('Objects cannot be used as "%s" because it has been used as "%s".', + raise EJclStringListError.CreateFmt('Objects cannot be used as "%s" because it has been used as "%s".', [GetEnumName(TypeInfo(TJclStringListObjectsMode), Ord(AMode)), GetEnumName(TypeInfo(TJclStringListObjectsMode), Ord(FObjectsMode))]); end; Modified: trunk/jcl/source/vcl/JclVersionControl.pas =================================================================== --- trunk/jcl/source/vcl/JclVersionControl.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/source/vcl/JclVersionControl.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -38,10 +38,14 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} + JclBase, SysUtils, Classes, Contnrs, Graphics, Controls, ActnList, ImgList; type + EJclVersionControlError = class(EJclError); + +type TJclVersionControlActionType = ( vcaAdd, // add current file vcaAddSandbox, // add file in the sandbox Modified: trunk/jcl/source/vcl/JclVersionCtrlCVSImpl.pas =================================================================== --- trunk/jcl/source/vcl/JclVersionCtrlCVSImpl.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/source/vcl/JclVersionCtrlCVSImpl.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -124,9 +124,9 @@ startupInfo.wShowWindow := SW_SHOW; if FileName = '' then - raise Exception.Create(RsEEmptyFileName); + raise EJclVersionControlError.Create(RsEEmptyFileName); if not Enabled then - raise Exception.Create(RsENoTortoiseCVS); + raise EJclVersionControlError.Create(RsENoTortoiseCVS); if FileName[Length(FileName)] = DirDelimiter then CurrentDir := FileName Modified: trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas =================================================================== --- trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -148,9 +148,9 @@ startupInfo.wShowWindow := SW_SHOW; if FileName = '' then - raise Exception.Create(RsEEmptyFileName); + raise EJclVersionControlError.Create(RsEEmptyFileName); if not Enabled then - raise Exception.Create(RsENoTortoiseSVN); + raise EJclVersionControlError.Create(RsENoTortoiseSVN); if FileName[Length(FileName)] = DirDelimiter then CurrentDir := FileName Modified: trunk/jcl/source/windows/JclDotNet.pas =================================================================== --- trunk/jcl/source/windows/JclDotNet.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/source/windows/JclDotNet.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -81,7 +81,7 @@ TJclClrHostLoaderFlags = set of TJclClrHostLoaderFlag; type - EJclClrException = class(SysUtils.Exception); + EJclClrException = class(EJclError); TJclClrAppDomain = class; TJclClrAppDomainSetup = class; Modified: trunk/jcl/source/windows/JclTimeZones.pas =================================================================== --- trunk/jcl/source/windows/JclTimeZones.pas 2010-12-06 02:09:19 UTC (rev 3424) +++ trunk/jcl/source/windows/JclTimeZones.pas 2010-12-07 16:40:12 UTC (rev 3425) @@ -60,7 +60,8 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - Windows, SysUtils, Contnrs, Classes; + Windows, SysUtils, Contnrs, Classes, + JclBase; type // Contents of the TZI value in the Time Zones section of the registry @@ -147,8 +148,8 @@ end; type - EDaylightSavingsNotSupported = class(Exception); - EAutoAdjustNotEnabled = class(Exception); + EDaylightSavingsNotSupported = class(EJclError); + EAutoAdjustNotEnabled = class(EJclError); // Enumerate all time zones from the registry function EnumTimeZones(CallBackFunc: TJclTimeZoneCallBackFunc): Boolean; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rro...@us...> - 2010-12-06 02:09:25
|
Revision: 3424 http://jcl.svn.sourceforge.net/jcl/?rev=3424&view=rev Author: rrossmair Date: 2010-12-06 02:09:19 +0000 (Mon, 06 Dec 2010) Log Message: ----------- RunAsAdmin function added. Modified Paths: -------------- trunk/jcl/source/windows/JclShell.pas Modified: trunk/jcl/source/windows/JclShell.pas =================================================================== --- trunk/jcl/source/windows/JclShell.pas 2010-12-05 21:21:59 UTC (rev 3423) +++ trunk/jcl/source/windows/JclShell.pas 2010-12-06 02:09:19 UTC (rev 3424) @@ -174,6 +174,8 @@ function ShellRasDial(const EntryName: string): Boolean; function ShellRunControlPanel(const NameOrFileName: string; AppletNumber: Integer = 0): Boolean; +function RunAsAdmin(const FileName: string; const Parameters: string = ''; const Parent: THandle = 0): Boolean; + function GetFileNameIcon(const FileName: string; Flags: Cardinal = 0): HICON; type @@ -231,6 +233,7 @@ cVerbProperties = 'properties'; cVerbOpen = 'open'; cVerbExplore = 'explore'; + cVerbRunas = 'runas'; //=== Files and Folders ====================================================== @@ -1469,8 +1472,8 @@ end; finally FreeLibrary(RasDlg); - end; - end + end; + end else Result := ShellExecEx('rundll32', Format('rnaui.dll,RnaDial "%s"', [EntryName]), '', SW_SHOWNORMAL); end; @@ -1504,6 +1507,28 @@ end; end; +// Compare http://msdn.microsoft.com/en-us/library/bb756922.aspx + +function RunAsAdmin(const FileName: string; const Parameters: string = ''; const Parent: THandle = 0): Boolean; +var + Sei: TShellExecuteInfo; +begin + ResetMemory(Sei, SizeOf(Sei)); + Sei.cbSize := SizeOf(TShellExecuteInfo); + Sei.Wnd := Parent; + Sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI; + Sei.lpVerb := PChar(cVerbRunas); + Sei.lpFile := PChar(FileName); + Sei.lpParameters := PCharOrNil(Parameters); + Sei.nShow := SW_SHOWNORMAL; + + {$TYPEDADDRESS ON} + Result := ShellExecuteEx(@Sei); + {$IFNDEF TYPEDADDRESS_ON} + {$TYPEDADDRESS OFF} + {$ENDIF ~TYPEDADDRESS_ON} +end; + function GetFileExeType(const FileName: TFileName): TJclFileExeType; var FileInfo: TSHFileInfo; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-12-05 21:22:05
|
Revision: 3423 http://jcl.svn.sourceforge.net/jcl/?rev=3423&view=rev Author: outchy Date: 2010-12-05 21:21:59 +0000 (Sun, 05 Dec 2010) Log Message: ----------- .cvsignore files are useless in SVN. Removed Paths: ------------- trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore Deleted: trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore =================================================================== --- trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore 2010-12-02 08:39:13 UTC (rev 3422) +++ trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore 2010-12-05 21:21:59 UTC (rev 3423) @@ -1,6 +0,0 @@ -*.hlp -*.cnt -*.gid -*.e32 -*.dll -*.exe This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-12-02 08:39:19
|
Revision: 3422 http://jcl.svn.sourceforge.net/jcl/?rev=3422&view=rev Author: ahuser Date: 2010-12-02 08:39:13 +0000 (Thu, 02 Dec 2010) Log Message: ----------- Don't depend on known Windows versions. Just check for greater equal Windows 2000, so an application doesn't fail if there is a new Windows version and you haven't recompiled your project with a new JCL, like all legacy applications. Modified Paths: -------------- trunk/jcl/source/common/JclSysUtils.pas Modified: trunk/jcl/source/common/JclSysUtils.pas =================================================================== --- trunk/jcl/source/common/JclSysUtils.pas 2010-11-26 19:51:21 UTC (rev 3421) +++ trunk/jcl/source/common/JclSysUtils.pas 2010-12-02 08:39:13 UTC (rev 3422) @@ -1090,7 +1090,7 @@ Result := 0; Pointer(P) := nil; - if (GetWindowsVersion in [wvUnknown..wvWinNT4]) and ((Name = '') or (Pos('\', Name) > 0)) then + if not CheckWin32Version(5, 0) and ((Name = '') or (Pos('\', Name) > 0)) then raise ESharedMemError.CreateResFmt(@RsInvalidMMFName, [Name]); {$IFDEF THREADSAFE} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-26 19:51:28
|
Revision: 3421 http://jcl.svn.sourceforge.net/jcl/?rev=3421&view=rev Author: ahuser Date: 2010-11-26 19:51:21 +0000 (Fri, 26 Nov 2010) Log Message: ----------- Prepare Setup for Delphi XE Modified Paths: -------------- trunk/thirdparty/InnoSetup/CompInstall.dll trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss trunk/thirdparty/InnoSetup/IdeComponents.iss trunk/thirdparty/InnoSetup/Install.iss trunk/thirdparty/InnoSetup/SourceDirectories.iss Added Paths: ----------- trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore trunk/thirdparty/InnoSetup/Settings.iss Modified: trunk/thirdparty/InnoSetup/CompInstall.dll =================================================================== (Binary files differ) Modified: trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss =================================================================== --- trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2010-11-23 19:06:24 UTC (rev 3420) +++ trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2010-11-26 19:51:21 UTC (rev 3421) @@ -452,7 +452,7 @@ // Check if there is any Delphi IDE installed Result := False; - for Version := 6 to 14 do + for Version := 6 to 15 do if IsDelphiInstalled(Version) then Result := True; Modified: trunk/thirdparty/InnoSetup/IdeComponents.iss =================================================================== --- trunk/thirdparty/InnoSetup/IdeComponents.iss 2010-11-23 19:06:24 UTC (rev 3420) +++ trunk/thirdparty/InnoSetup/IdeComponents.iss 2010-11-26 19:51:21 UTC (rev 3421) @@ -25,3 +25,6 @@ #ifdef Include_Delphi14 Name: "IDE\Delphi14"; Description: "Install for RAD Studio 2010"; Types: full prefered; Check: IsDelphiInstalled(14) #endif +#ifdef Include_Delphi15 +Name: "IDE\Delphi15"; Description: "Install for RAD Studio XE"; Types: full prefered; Check: IsDelphiInstalled(15) +#endif Added: trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore =================================================================== --- trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore (rev 0) +++ trunk/thirdparty/InnoSetup/InnoSetup/.cvsignore 2010-11-26 19:51:21 UTC (rev 3421) @@ -0,0 +1,6 @@ +*.hlp +*.cnt +*.gid +*.e32 +*.dll +*.exe Modified: trunk/thirdparty/InnoSetup/Install.iss =================================================================== --- trunk/thirdparty/InnoSetup/Install.iss 2010-11-23 19:06:24 UTC (rev 3420) +++ trunk/thirdparty/InnoSetup/Install.iss 2010-11-26 19:51:21 UTC (rev 3421) @@ -4,36 +4,32 @@ ; Include_Binaries Create an installer that can install a precompiled JCL ; Include_Examples Add the Examples directory to the installer (user can then select the component) ; DEBUGGING Development. Will only use Delphi 5 BPLs as files with a fast compression (script debugging) -; Include_DelphiX Include the binaries for Delphi X (X in 5..14) -; Include_BCBX Include the binaries for C++Builder X (X in 5..6) +; Include_DelphiX Include the binaries for Delphi X (X in 6..15) +; Include_BCBX Include the binaries for C++Builder 6 -#define JclVersionStr "2.0.1.3449" +#define Include_SingleIDE +#define Include_Binaries +#define Include_Examples +;#define DEBUGGING + +#include "Settings.iss" + +#ifdef Include_SingleIDE +#endif #define MyAppName "Jedi Code Library" #define MyAppVerName "Jedi Code Library " + JclVersionStr #define MyAppPublisher "JCL Team" #define MyAppURL "http://jcl.sourceforge.net/" #define downloadurl "http://jcl.sourceforge.net/websetup/jcl" -#define Include_Binaries -#define Include_Examples -;#define DEBUGGING - -#define Include_SingleIDE -#define Include_Delphi14 - - #ifdef DEBUGGING #define Include_SingleIDE - #define Include_Delphi14 + #define Include_Delphi15 #undef Include_Examples #endif - #ifdef Include_Binaries #ifndef Include_SingleIDE -; #define Include_BCB5 - #define Include_Delphi5 -; #define Include_BCB6 #define Include_Delphi6 #define Include_Delphi7 #define Include_Delphi9 @@ -41,40 +37,16 @@ #define Include_Delphi11 #define Include_Delphi12 #define Include_Delphi14 + #define Include_Delphi15 #endif #endif ;--------------------------------------------------- +#ifndef SourceDirectoriesDefines #include "SourceDirectories.iss" +#endif -#define Delphi5Root BorlandRoot + "\Delphi5" -#define Delphi5Bpl Delphi5Root + "\Projects\Bpl" -#define Delphi5Dcp Delphi5Bpl -#define BCB5Root BorlandRoot + "\CBuilder5" -#define BCB5Bpl BCB5Root + "\Projects\Bpl" -#define BCB5Dcp BCB5Bpl -#define Delphi6Root BorlandRoot + "\Delphi6" -#define Delphi6Bpl Delphi6Root + "\Projects\Bpl" -#define Delphi6Dcp Delphi6Bpl -#define BCB6Root BorlandRoot + "\CBuilder6" -#define BCB6Bpl BCB6Root + "\Projects\Bpl" -#define BCB6Dcp BCB6Bpl -#define Delphi7Root BorlandRoot + "\Delphi7" -#define Delphi7Bpl Delphi7Root + "\Projects\Bpl" -#define Delphi7Dcp Delphi7Bpl -#define Delphi9Root BorlandRoot + "\BDS\3.0" -#define Delphi9Bpl BorlandSudioProjects + "\Bpl" -#define Delphi10Root BorlandRoot + "\BDS\4.0" -#define Delphi10Bpl BorlandSudioProjects + "\Bpl" -#define Delphi11Root CodeGearRoot + "\RAD Studio\5.0" -#define Delphi11Bpl CommonDocs + "\RAD Studio\5.0\Bpl" -#define Delphi12Root CodeGearRoot + "\RAD Studio\6.0" -#define Delphi12Bpl CommonDocs + "\RAD Studio\6.0\Bpl" -#define Delphi14Root EmbtRoot + "\RAD Studio\7.0" -#define Delphi14Bpl CommonDocs + "\RAD Studio\7.0\Bpl" - - [Setup] AppName={#MyAppName} AppVerName={#MyAppVerName} @@ -137,6 +109,7 @@ Name: delphi11; Description: "Delphi/C++Builder 2007 binary files"; Source: "{#downloadurl}/jcldelphi11.isz"; Flags: localcopy; Name: delphi12; Description: "Delphi/C++Builder 2009 binary files"; Source: "{#downloadurl}/jcldelphi12.isz"; Flags: localcopy; Name: delphi14; Description: "Delphi/C++Builder 2010 binary files"; Source: "{#downloadurl}/jcldelphi14.isz"; Flags: localcopy; +Name: delphi15; Description: "Delphi/C++Builder XE binary files"; Source: "{#downloadurl}/jcldelphi15.isz"; Flags: localcopy; #include "IdeComponents.iss" @@ -161,15 +134,14 @@ Source: {#JclRoot}\*.bat; DestDir: "{app}"; Flags: ignoreversion Source: {#JclRoot}\*.sh; DestDir: "{app}"; Flags: ignoreversion Source: {#JclRoot}\*.txt; DestDir: "{app}"; Flags: ignoreversion -Source: {#JclRoot}\source\*; DestDir: "{app}\source"; Excludes: ".svn,__history,*.~*,*.hpp,*.txt"; Flags: ignoreversion sortfilesbyextension recursesubdirs -Source: {#JclRoot}\packages\*; DestDir: "{app}\packages"; Excludes: ".svn,__history,*.drc,*.txt"; Flags: ignoreversion sortfilesbyextension recursesubdirs -Source: {#JclRoot}\install\*; DestDir: "{app}\install"; Excludes: ".svn,__history,*.~*,ISS,dcc32.cfg,*.cmd,*.local,*.identcache"; Flags: ignoreversion recursesubdirs sortfilesbyextension +Source: {#JclRoot}\*.proj; DestDir: "{app}"; Flags: ignoreversion Source: {#JclRoot}\devtools\*; DestDir: "{app}\devtools"; Excludes: ".svn,__history"; Flags: ignoreversion sortfilesbyextension recursesubdirs Source: {#JclRoot}\docs\*; DestDir: "{app}\docs"; Excludes: ".svn,__history"; Flags: ignoreversion sortfilesbyextension recursesubdirs Source: {#JclRoot}\experts\*; DestDir: "{app}\experts"; Excludes: ".svn,__history,*.~*,*.txt"; Flags: ignoreversion sortfilesbyextension recursesubdirs -Source: {#JclRoot}\include\*; DestDir: "{app}\include"; Excludes: ".svn,__history"; Flags: ignoreversion recursesubdirs sortfilesbyextension +Source: {#JclRoot}\install\*; DestDir: "{app}\install"; Excludes: ".svn,__history,*.~*,ISS,dcc32.cfg,*.cmd,*.local,*.identcache"; Flags: ignoreversion recursesubdirs sortfilesbyextension Source: {#JclRoot}\lib\*; DestDir: "{app}\lib"; Excludes: ".svn,__history,*.dcu,*.obj,*.dcp,*.lib,*.bpi,*.dfm,*.res,*.txt"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs - +Source: {#JclRoot}\packages\*; DestDir: "{app}\packages"; Excludes: ".svn,__history,*.drc,*.txt,*.identcache,*.local,*.~*,*.dcu"; Flags: ignoreversion sortfilesbyextension recursesubdirs +Source: {#JclRoot}\source\*; DestDir: "{app}\source"; Excludes: ".svn,__history,*.~*,*.hpp,*.txt"; Flags: ignoreversion sortfilesbyextension recursesubdirs #ifdef Include_Examples ; SolidBreak Source: {#JclRoot}\examples\*; DestDir: "{app}\examples"; Excludes: ".svn,__history,*.dcu,*.obj,*.exe,*.bpl,*.dcp,*.~*"; Components: "Examples"; Flags: ignoreversion recursesubdirs sortfilesbyextension solidbreak @@ -181,12 +153,6 @@ Source: {#JclRoot}\lib\d6\*; DestDir: "{app}\lib\d6"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi6"; Package: delphi6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak Source: {#Delphi6Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|6}"; Components: "IDE\Delphi6"; Package: delphi6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs #endif -#ifdef Include_BCB6 -; SolidBreak; -Source: {#JclRoot}\lib\c6\*; DestDir: "{app}\lib\c6"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\BCB6"; Package: jclbcb6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak -Source: {#BCB6Bpl}\Jcl*.*; DestDir: "{code:GetBCBBplDir|6}"; Components: "IDE\BCB6"; Package: jclbcb6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -Source: {#BCB6Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetBCBDir|6}\Include\Vcl"; Components: "IDE\BCB6"; Package: jclbcb6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -#endif #ifdef Include_Delphi7 ; SolidBreak; Source: {#JclRoot}\lib\d7\*; DestDir: "{app}\lib\d7"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi7"; Package: delphi7; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak @@ -199,39 +165,67 @@ #endif #ifdef Include_Delphi10 ; SolidBreak; + #ifdef JclHpp +Source: {#JclLib}\*.*; DestDir: "{app}\lib\d10"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak +Source: {#JclBpl}\*.*; DestDir: "{code:GetDelphiBplDir|10}"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs +Source: {#JclHpp}\*.*; DestDir: "{code:GetHPPDir|10}"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion sortfilesbyextension + #else Source: {#JclRoot}\lib\d10\*; DestDir: "{app}\lib\d10"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak Source: {#Delphi10Bpl}\Jcl*10*.*; DestDir: "{code:GetDelphiBplDir|10}"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -Source: {#Delphi10Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetDelphiDir|10}\Include\Vcl"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs +Source: {#Delphi10Hpp}\Jcl*.hpp; DestDir: "{code:GetHPPDir|10}"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs + #endif #endif #ifdef Include_Delphi11 ; SolidBreak; + #ifdef JclHpp +Source: {#JclLib}\*.*; DestDir: "{app}\lib\d11"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak +Source: {#JclBpl}\*.*; DestDir: "{code:GetDelphiBplDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs +Source: {#JclHpp}\*.*; DestDir: "{code:GetHPPDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion sortfilesbyextension + #else Source: {#JclRoot}\lib\d11\*; DestDir: "{app}\lib\d11"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak Source: {#Delphi11Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -;Source: {#Delphi11Root}\Include\Vcl\Jcl*.hpp; DestDir: "{app}\lib\d11\Include"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -Source: {#JclRoot}\source\common\*.hpp; DestDir: "{code:GetHPPDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion sortfilesbyextension -Source: {#JclRoot}\source\windows\*.hpp; DestDir: "{code:GetHPPDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion sortfilesbyextension -Source: {#JclRoot}\source\vcl\*.hpp; DestDir: "{code:GetHPPDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion sortfilesbyextension +Source: {#Delphi11Hpp}\Jcl*.hpp; DestDir: "{code:GetHPPDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs + #endif #endif #ifdef Include_Delphi12 ; SolidBreak; + #ifdef JclHpp +Source: {#JclLib}\*.*; DestDir: "{app}\lib\d12"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak +Source: {#JclBpl}\*.*; DestDir: "{code:GetDelphiBplDir|12}"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs +Source: {#JclHpp}\*.*; DestDir: "{code:GetHPPDir|12}"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion sortfilesbyextension + #else Source: {#JclRoot}\lib\d12\*; DestDir: "{app}\lib\d12"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak Source: {#Delphi12Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|12}"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -;Source: {#Delphi12Root}\Include\Vcl\Jcl*.hpp; DestDir: "{app}\lib\d12\Include"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -Source: {#JclRoot}\source\common\*.hpp; DestDir: "{code:GetHPPDir|12}"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion sortfilesbyextension -Source: {#JclRoot}\source\windows\*.hpp; DestDir: "{code:GetHPPDir|12}"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion sortfilesbyextension -Source: {#JclRoot}\source\vcl\*.hpp; DestDir: "{code:GetHPPDir|12}"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion sortfilesbyextension +Source: {#Delphi12Hpp}\Jcl*.hpp; DestDir: "{code:GetHPPDir|12}"; Components: "IDE\Delphi12"; Package: delphi12; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs + #endif #endif #ifdef Include_Delphi14 ; SolidBreak; + #ifdef JclHpp +Source: {#JclJcl}\*.*; DestDir: "{app}\lib\d14"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak +Source: {#JclBpl}\*.*; DestDir: "{code:GetDelphiBplDir|14}"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs +Source: {#JclHpp}\*.*; DestDir: "{code:GetHPPDir|14}"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion sortfilesbyextension + #else Source: {#JclRoot}\lib\d14\*; DestDir: "{app}\lib\d14"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak Source: {#Delphi14Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|14}"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -;Source: {#Delphi14Root}\Include\Vcl\Jcl*.hpp; DestDir: "{app}\lib\d14\Include"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs -Source: {#JclRoot}\source\common\*.hpp; DestDir: "{code:GetHPPDir|14}"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion sortfilesbyextension -Source: {#JclRoot}\source\windows\*.hpp; DestDir: "{code:GetHPPDir|14}"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion sortfilesbyextension -Source: {#JclRoot}\source\vcl\*.hpp; DestDir: "{code:GetHPPDir|14}"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion sortfilesbyextension +Source: {#Delphi14Hpp}\Jcl*.hpp; DestDir: "{code:GetHPPDir|14}"; Components: "IDE\Delphi14"; Package: delphi14; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs + #endif #endif +#ifdef Include_Delphi15 +; SolidBreak; + #ifdef JclHpp +Source: {#JclLib}\*.*; DestDir: "{app}\lib\d15"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi15"; Package: delphi15; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak +Source: {#JclBpl}\*.*; DestDir: "{code:GetDelphiBplDir|15}"; Components: "IDE\Delphi15"; Package: delphi15; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs +Source: {#JclHpp}\*.*; DestDir: "{code:GetHPPDir|15}"; Components: "IDE\Delphi15"; Package: delphi15; Flags: ignoreversion sortfilesbyextension + #else +Source: {#JclRoot}\lib\d15\*; DestDir: "{app}\lib\d15"; Excludes: ".svn,__history,*.txt,*.hpp"; Components: "IDE\Delphi15"; Package: delphi15; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak +Source: {#Delphi15Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|15}"; Components: "IDE\Delphi15"; Package: delphi15; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs +Source: {#Delphi15Hpp}\Jcl*.hpp; DestDir: "{code:GetHPPDir|15}"; Components: "IDE\Delphi15"; Package: delphi15; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs + #endif #endif +#endif + ; only source code => execute Jedi Installer [Run] Filename: {app}\install.bat; Description: "Execute JEDI Installer"; Flags: postinstall shellexec; Check: IsSourceInstall; @@ -290,7 +284,15 @@ Root: HKCU; Subkey: "{code:GetDelphiRegKey|14}\Jedi\JCL"; ValueType: string; ValueName: "Version"; ValueData: {#JclVersionStr}; Components: "IDE\Delphi14"; Flags: uninsdeletevalue; Check: IsDelphiInstalled(14) Root: HKCU; Subkey: "{code:GetDelphiRegKey|14}\Globals"; ValueType: string; ValueName: "ForceEnvOptionsUpdate"; ValueData: "1"; Components: "IDE\Delphi14"; Check: IsDelphiInstalled(14) #endif +#ifdef Include_Delphi15 +; Delphi XE +Root: HKCU; Subkey: "{code:GetDelphiRegKey|15}\Jedi\JCL"; ValueType: string; ValueName: "BplDir"; ValueData: {code:GetDelphiBplDir|15}; Components: "IDE\Delphi15"; Flags: uninsdeletevalue; Check: IsDelphiInstalled(15) +Root: HKCU; Subkey: "{code:GetDelphiRegKey|15}\Jedi\JCL"; ValueType: string; ValueName: "DcpDir"; ValueData: {app}\lib\d15; Components: "IDE\Delphi15"; Flags: uninsdeletevalue; Check: IsDelphiInstalled(15) +Root: HKCU; Subkey: "{code:GetDelphiRegKey|15}\Jedi\JCL"; ValueType: string; ValueName: "RootDir"; ValueData: {app}; Components: "IDE\Delphi15"; Flags: uninsdeletevalue; Check: IsDelphiInstalled(15) +Root: HKCU; Subkey: "{code:GetDelphiRegKey|15}\Jedi\JCL"; ValueType: string; ValueName: "Version"; ValueData: {#JclVersionStr}; Components: "IDE\Delphi15"; Flags: uninsdeletevalue; Check: IsDelphiInstalled(15) +Root: HKCU; Subkey: "{code:GetDelphiRegKey|15}\Globals"; ValueType: string; ValueName: "ForceEnvOptionsUpdate"; ValueData: "1"; Components: "IDE\Delphi15"; Check: IsDelphiInstalled(15) #endif +#endif @@ -302,42 +304,41 @@ Type: files; Name: "{app}\source\common\*.hpp" Type: files; Name: "{app}\source\vcl\*.hpp" Type: files; Name: "{app}\source\windows\*.hpp" -; lib\C++Builder 6 -Type: files; Name: "{app}\lib\c6\*" -Type: files; Name: "{code:GetBCBBplDir|6}\Jcl*.*" -Type: files; Name: "{code:GetBCBDir|6}\Include\Vcl\Jcl*.hpp" +Type: files; Name: "{app}\source\common\*.dcu" +Type: files; Name: "{app}\source\vcl\*.dcu" +Type: files; Name: "{app}\source\windows\*.dcu" ; lib\Delphi 6 Type: files; Name: "{app}\lib\d6\*" Type: files; Name: "{app}\lib\d6\debug\*" -Type: files; Name: "{code:GetDelphiBplDir|6}\Jcl*.*" +Type: files; Name: "{code:GetDelphiBplDir|6}\Jcl*.~bpl"; ; lib\Delphi 7 Type: files; Name: "{app}\lib\d7\*" Type: files; Name: "{app}\lib\d7\debug\*" -Type: files; Name: "{code:GetDelphiBplDir|7}\Jcl*.*" +Type: files; Name: "{code:GetDelphiBplDir|7}\Jcl*.~bpl"; ; lib\Delphi 2005 Type: files; Name: "{app}\lib\d9\*" Type: files; Name: "{app}\lib\d9\debug\*" -Type: files; Name: "{code:GetDelphiBplDir|9}\Jcl*.*" +Type: files; Name: "{code:GetDelphiBplDir|9}\Jcl*.~bpl"; ; lib\Delphi/C++Builder 2006 Type: files; Name: "{app}\lib\d10\*" Type: files; Name: "{app}\lib\d10\debug\*" -Type: files; Name: "{code:GetDelphiBplDir|10}\Jcl*.*" -Type: files; Name: "{code:GetDelphiDir|10}\Include\Vcl\Jcl*.hpp" +Type: files; Name: "{code:GetDelphiBplDir|10}\Jcl*.~bpl"; ; lib\Delphi/C++Builder 2007 Type: files; Name: "{app}\lib\d11\*" Type: files; Name: "{app}\lib\d11\debug\*" -Type: files; Name: "{code:GetDelphiBplDir|11}\Jcl*.*" -;Type: files; Name: "{code:GetDelphiDir|11}\Include\Vcl\Jcl*.hpp" +Type: files; Name: "{code:GetDelphiBplDir|11}\Jcl*.~bpl"; ; lib\Delphi/C++Builder 2009 Type: files; Name: "{app}\lib\d12\*" Type: files; Name: "{app}\lib\d12\debug\*" -Type: files; Name: "{code:GetDelphiBplDir|12}\Jcl*.*" -;Type: files; Name: "{code:GetDelphiDir|12}\Include\Vcl\Jcl*.hpp" +Type: files; Name: "{code:GetDelphiBplDir|12}\Jcl*.~bpl"; ; lib\Delphi/C++Builder 2010 Type: files; Name: "{app}\lib\d14\*" Type: files; Name: "{app}\lib\d14\debug\*" -Type: files; Name: "{code:GetDelphiBplDir|14}\Jcl*.*" -;Type: files; Name: "{code:GetDelphiDir|14}\Include\Vcl\Jcl*.hpp" +Type: files; Name: "{code:GetDelphiBplDir|14}\Jcl*.~bpl"; +; lib\Delphi/C++Builder XE +Type: files; Name: "{app}\lib\d15\*" +Type: files; Name: "{app}\lib\d15\debug\*" +Type: files; Name: "{code:GetDelphiBplDir|15}\Jcl*.~bpl"; [Icons] Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" Added: trunk/thirdparty/InnoSetup/Settings.iss =================================================================== --- trunk/thirdparty/InnoSetup/Settings.iss (rev 0) +++ trunk/thirdparty/InnoSetup/Settings.iss 2010-11-26 19:51:21 UTC (rev 3421) @@ -0,0 +1,2 @@ +#define Include_Delphi15 +#define JclVersionStr "2.0.1.3449" Modified: trunk/thirdparty/InnoSetup/SourceDirectories.iss =================================================================== --- trunk/thirdparty/InnoSetup/SourceDirectories.iss 2010-11-23 19:06:24 UTC (rev 3420) +++ trunk/thirdparty/InnoSetup/SourceDirectories.iss 2010-11-26 19:51:21 UTC (rev 3421) @@ -1,6 +1,20 @@ #define JclRoot "Z:\JEDI\JCL" -#define BorlandRoot = "C:\Borland" -#define CodeGearRoot = "C:\CodeGear" -#define EmbtRoot = "C:\Program Files (x86)\Embarcadero" -#define BorlandSudioProjects "C:\Users\Andreas\Documents\Borland Studio Projekte" -#define CommonDocs "C:\Users\Public\Documents" + +#define Delphi6Bpl "C:\Borland\Delphi6\Projects\Bpl" +#define Delphi7Bpl "C:\Borland\Delphi7\Projects\Bpl" +#define Delphi9Bpl "C:\Users\Andreas\Documents\Borland Studio Projekte\Bpl" + +#define Delphi10Bpl "C:\Users\Andreas\Documents\Borland Studio Projekte\Bpl" +#define Delphi10Bpl "C:\Users\Andreas\Documents\Borland Studio Projekte\Hpp" + +#define Delphi11Bpl "C:\Users\Public\Documents\RAD Studio\5.0\Bpl" +#define Delphi11Hpp "C:\Users\Public\Documents\RAD Studio\5.0\Hpp" + +#define Delphi12Bpl "C:\Users\Public\Documents\RAD Studio\6.0\Bpl" +#define Delphi12Hpp "C:\Users\Public\Documents\RAD Studio\6.0\Hpp" + +#define Delphi14Bpl "C:\Users\Public\Documents\RAD Studio\7.0\Bpl" +#define Delphi14Hpp "C:\Users\Public\Documents\RAD Studio\7.0\Hpp" + +#define Delphi15Bpl "C:\Users\Public\Documents\RAD Studio\8.0\Bpl" +#define Delphi15Hpp "C:\Users\Public\Documents\RAD Studio\8.0\Hpp" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-11-23 19:06:32
|
Revision: 3420 http://jcl.svn.sourceforge.net/jcl/?rev=3420&view=rev Author: outchy Date: 2010-11-23 19:06:24 +0000 (Tue, 23 Nov 2010) Log Message: ----------- Mantis 5381: Windows7 installation fails. Remove the "@echo off" from the batch scripts. Modified Paths: -------------- trunk/jcl/Install turbo delphi.bat trunk/jcl/Install.bat Modified: trunk/jcl/Install turbo delphi.bat =================================================================== --- trunk/jcl/Install turbo delphi.bat 2010-11-15 09:50:37 UTC (rev 3419) +++ trunk/jcl/Install turbo delphi.bat 2010-11-23 19:06:24 UTC (rev 3420) @@ -1,5 +1,3 @@ -@echo off - echo Launching JCL installer... start .\bin\JediInstaller.exe %2 %3 %4 %5 %6 %7 %8 %9 Modified: trunk/jcl/Install.bat =================================================================== --- trunk/jcl/Install.bat 2010-11-15 09:50:37 UTC (rev 3419) +++ trunk/jcl/Install.bat 2010-11-23 19:06:24 UTC (rev 3420) @@ -1,5 +1,3 @@ -@echo off - SET DELPHIVERSION=%1 cd install This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-11-15 10:23:14
|
Revision: 3419 http://jcl.svn.sourceforge.net/jcl/?rev=3419&view=rev Author: outchy Date: 2010-11-15 09:50:37 +0000 (Mon, 15 Nov 2010) Log Message: ----------- Compatibility with RAD Studio XE and C++Builder XE update 1. Modified Paths: -------------- branches/JCL_2.2/jcl/source/windows/MSTask.pas Modified: branches/JCL_2.2/jcl/source/windows/MSTask.pas =================================================================== --- branches/JCL_2.2/jcl/source/windows/MSTask.pas 2010-11-15 09:47:16 UTC (rev 3418) +++ branches/JCL_2.2/jcl/source/windows/MSTask.pas 2010-11-15 09:50:37 UTC (rev 3419) @@ -33,12 +33,8 @@ unit MSTask; -{$ALIGN ON} -{$MINENUMSIZE 4} - -interface - {$I jcl.inc} +{$I windowsonly.inc} {$IFDEF SUPPORTS_WEAKPACKAGEUNIT} {$IFDEF UNITVERSIONING} @@ -48,6 +44,11 @@ {$ENDIF ~UNITVERSIONING} {$ENDIF SUPPORTS_WEAKPACKAGEUNIT} +{$ALIGN ON} +{$MINENUMSIZE 4} + +interface + uses {$IFDEF UNITVERSIONING} JclUnitVersioning, @@ -55,6 +56,7 @@ ActiveX, Windows; +//DOM-IGNORE-BEGIN (*$HPPEMIT '#include <MSTask.h>' *) @@ -340,11 +342,6 @@ end; {$EXTERNALSYM TASK_TRIGGER} - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef struct _TAST_TRIGGER _TASK_TRIGGER;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} TASK_TRIGGER = _TASK_TRIGGER; TTaskTrigger = _TASK_TRIGGER; @@ -387,11 +384,6 @@ function GetTriggerString(out ppwszTrigger: LPWSTR): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {out} LPWSTR * ppwszTrigger |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface ITaskTrigger ITaskTrigger;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} //+---------------------------------------------------------------------------- // @@ -472,11 +464,6 @@ function GetAccountInformation(out ppwszAccountName: LPWSTR): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {out} LPWSTR * ppwszAccountName |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface IScheduledWorkItem IScheduledWorkItem;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} //+---------------------------------------------------------------------------- // @@ -524,11 +511,6 @@ function GetMaxRunTime(out pdwMaxRunTimeMS: DWORD): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {out} DWORD * pdwMaxRunTimeMS |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface ITask ITask;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} //+---------------------------------------------------------------------------- // @@ -597,11 +579,6 @@ function IsOfType(pwszName: LPCWSTR; const riid: TIID): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {in} LPCWSTR pwszName, {in} REFIID riid |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface ITaskScheduler ITaskScheduler;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} // EXTERN_C const CLSID CLSID_CTask; // EXTERN_C const CLSID CLSID_CTaskScheduler; @@ -691,6 +668,8 @@ {$EXTERNALSYM CLSID_CSchedulingAgent} CLSID_CSchedulingAgent: TCLSID = (D1: $148BD52A; D2: $A2AB; D3: $11CE; D4: ($B1, $1F, $00, $AA, $00, $53, $05, $03)); +//DOM-IGNORE-END + {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-11-15 09:47:23
|
Revision: 3418 http://jcl.svn.sourceforge.net/jcl/?rev=3418&view=rev Author: outchy Date: 2010-11-15 09:47:16 +0000 (Mon, 15 Nov 2010) Log Message: ----------- Compatibility with RAD Studio XE and C++Builder XE update 1. Modified Paths: -------------- trunk/jcl/source/windows/MSTask.pas Modified: trunk/jcl/source/windows/MSTask.pas =================================================================== --- trunk/jcl/source/windows/MSTask.pas 2010-11-11 14:04:01 UTC (rev 3417) +++ trunk/jcl/source/windows/MSTask.pas 2010-11-15 09:47:16 UTC (rev 3418) @@ -342,11 +342,6 @@ end; {$EXTERNALSYM TASK_TRIGGER} - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef struct _TAST_TRIGGER _TASK_TRIGGER;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} TASK_TRIGGER = _TASK_TRIGGER; TTaskTrigger = _TASK_TRIGGER; @@ -389,11 +384,6 @@ function GetTriggerString(out ppwszTrigger: LPWSTR): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {out} LPWSTR * ppwszTrigger |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface ITaskTrigger ITaskTrigger;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} //+---------------------------------------------------------------------------- // @@ -474,11 +464,6 @@ function GetAccountInformation(out ppwszAccountName: LPWSTR): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {out} LPWSTR * ppwszAccountName |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface IScheduledWorkItem IScheduledWorkItem;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} //+---------------------------------------------------------------------------- // @@ -526,11 +511,6 @@ function GetMaxRunTime(out pdwMaxRunTimeMS: DWORD): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {out} DWORD * pdwMaxRunTimeMS |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface ITask ITask;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} //+---------------------------------------------------------------------------- // @@ -599,11 +579,6 @@ function IsOfType(pwszName: LPCWSTR; const riid: TIID): HRESULT; stdcall; (*| Parameter(s) was/were [CPP]: {in} LPCWSTR pwszName, {in} REFIID riid |*) end; - {$IFDEF COMPILER15_UP} - (*$HPPEMIT 'namespace Mstask {'*) - (*$HPPEMIT 'typedef interface ITaskScheduler ITaskScheduler;'*) - (*$HPPEMIT '}'*) - {$ENDIF COMPILER15_UP} // EXTERN_C const CLSID CLSID_CTask; // EXTERN_C const CLSID CLSID_CTaskScheduler; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |