lazutils: replaced TPASObjectWriter with TCompWriterPas

git-svn-id: trunk@56208 -
This commit is contained in:
mattias 2017-10-26 14:18:13 +00:00
parent f7c4861200
commit acd77c3bb0
6 changed files with 1356 additions and 1752 deletions

View File

@ -754,6 +754,8 @@ type
const ClassContext, AncestorClassContext: TFindContext;
{%H-}LFMNode: TLFMTreeNode;
const IdentName: string; var IsDefined: boolean);
function UpdateComponentInit(Code: TCodeBuffer; const aClassName,
AccessClass, StartSignature, EndSignature, InitSrc: string): boolean;
// register proc
function HasInterfaceRegisterProc(Code: TCodeBuffer;
@ -5383,6 +5385,23 @@ begin
end;
end;
function TCodeToolManager.UpdateComponentInit(Code: TCodeBuffer;
const aClassName, AccessClass, StartSignature, EndSignature, InitSrc: string
): boolean;
begin
Result:=false;
{$IFDEF CTDEBUG}
DebugLn(['TCodeToolManager.UpdateComponentInit A ',Code.Filename,' Class="'+aClassName+'" AccessClass="'+AccessClass+'" StartSignature="'+StartSignature+'" EndSignature="'+EndSignature+'" InitSrc={'+InitSrc+'}']);
{$ENDIF}
if not InitCurCodeTool(Code) then exit;
try
Result:=FCurCodeTool.UpdateComponentInit(aClassName,AccessClass,
StartSignature,EndSignature,InitSrc,SourceChangeCache);
except
on e: Exception do Result:=HandleException(e);
end;
end;
function TCodeToolManager.FindCreateFormStatement(Code: TCodeBuffer;
StartPos: integer;
const AClassName, AVarName: string;

View File

@ -124,6 +124,10 @@ type
const WithExpr: string; // if empty: collect Candidates
Candidates: TStrings; SourceChangeCache: TSourceChangeCache): boolean;
function UpdateComponentInit(const aClassName, AccessClass,
StartSignature, EndSignature, InitSrc: string;
SourceChangeCache: TSourceChangeCache): boolean;
procedure CalcMemSize(Stats: TCTMemStats); override;
end;
@ -1696,6 +1700,35 @@ begin
Result:=true;
end;
function TExtractProcTool.UpdateComponentInit(const aClassName, AccessClass,
StartSignature, EndSignature, InitSrc: string;
SourceChangeCache: TSourceChangeCache): boolean;
procedure E(TheID: int64; Msg: string);
begin
raise ECodeToolError.Create(Self,TheID,'TExtractProcTool.UpdateComponentInit: '+Msg);
end;
begin
Result:=false;
{$IFDEF VerbosePasStream}
debugln(['TExtractProcTool.UpdateComponentInit START ',MainFilename,' aClassName="'+aClassName+'" AccessClass="'+AccessClass+'" StartSignature={'+DbgStr(StartSignature)+'} EndSignature={'+dbgstr(EndSignature)+'} InitSrc={'+InitSrc+'}']);
{$ENDIF}
if aClassName='' then
E(20171025224428,'missing aClassName');
if not IsValidIdent(aClassName) then
E(20171025224540,'invalid aClassName "'+aClassName+'"');
if (AccessClass<>'') and not IsValidIdent(AccessClass) then
E(20171025224607,'invalid AccessClass "'+AccessClass+'"');
if StartSignature='' then
E(20171025224636,'missing StartSignature');
if EndSignature='' then
E(20171025224647,'missing EndSignature');
// find class
// ToDo
end;
procedure TExtractProcTool.CalcMemSize(Stats: TCTMemStats);
begin
inherited CalcMemSize(Stats);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, XMLStreaming, Unit1;
Classes, Unit1;
begin
StreamAsPasForm:=TStreamAsPasForm.Create(nil);

View File

@ -5,7 +5,7 @@ unit Unit1;
interface
uses
Classes, SysUtils, LCLProc, typinfo, CompWriterPas;
Classes, SysUtils, typinfo, CompWriterPas, LazLogger;
type
TMyEnum = (myEnum1, myEnum2, myEnum3);
@ -199,7 +199,7 @@ begin
SetLength(s,ms.Size);
if s<>'' then
ms.Read(s[1],length(s));
debugln(['TStreamAsPasForm.WriteComponents ',s]);
DebugLn(['TStreamAsPasForm.WriteComponents ',s]);
finally
ms.Free;
end;