mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 21:09:23 +02:00
codetools: h2pas: fixed converting int i
git-svn-id: trunk@31301 -
This commit is contained in:
parent
2b1f4d3db4
commit
ab2b327fd3
@ -366,6 +366,8 @@ type
|
|||||||
function CCNodeDescAsString(Desc: TCCodeNodeDesc; SubDesc: TCCodeNodeDesc = 0): string;
|
function CCNodeDescAsString(Desc: TCCodeNodeDesc; SubDesc: TCCodeNodeDesc = 0): string;
|
||||||
procedure InitCCodeKeyWordLists;
|
procedure InitCCodeKeyWordLists;
|
||||||
|
|
||||||
|
function GetNodeIndent(Node: TCodeTreeNode): string;
|
||||||
|
|
||||||
var
|
var
|
||||||
IsCCodeFunctionModifier: TKeyWordFunctionList = nil;
|
IsCCodeFunctionModifier: TKeyWordFunctionList = nil;
|
||||||
IsCCodeCustomOperator: TKeyWordFunctionList = nil;
|
IsCCodeCustomOperator: TKeyWordFunctionList = nil;
|
||||||
@ -454,6 +456,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GetNodeIndent(Node: TCodeTreeNode): string;
|
||||||
|
begin
|
||||||
|
if Node=nil then
|
||||||
|
Result:=''
|
||||||
|
else
|
||||||
|
Result:=GetIndentStr(Node.GetLevel*2);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TCHeaderFileMerger }
|
{ TCHeaderFileMerger }
|
||||||
|
|
||||||
procedure TCHeaderFileMerger.AddLink(aMergedPos: integer; aCode: TCodeBuffer;
|
procedure TCHeaderFileMerger.AddLink(aMergedPos: integer; aCode: TCodeBuffer;
|
||||||
@ -835,10 +845,8 @@ begin
|
|||||||
ReadDefinition(false);
|
ReadDefinition(false);
|
||||||
if CurNode.LastChild.Desc<>ccnFunction then begin
|
if CurNode.LastChild.Desc<>ccnFunction then begin
|
||||||
ReadNextAtom;
|
ReadNextAtom;
|
||||||
debugln(['TCCodeParserTool.OtherToken ',GetAtom,' SrcPos=',SrcPos,' AtomStart=',AtomStart,' SrcLen=',SrcLen]);
|
|
||||||
if not AtomIsChar(';') then
|
if not AtomIsChar(';') then
|
||||||
RaiseExpectedButAtomFound(';');
|
RaiseExpectedButAtomFound(';');
|
||||||
debugln(['TCCodeParserTool.OtherToken AAA1']);
|
|
||||||
end;
|
end;
|
||||||
end else
|
end else
|
||||||
RaiseException('unexpected token '+GetAtom);
|
RaiseException('unexpected token '+GetAtom);
|
||||||
@ -855,7 +863,7 @@ function TCCodeParserTool.DirectiveToken: boolean;
|
|||||||
repeat
|
repeat
|
||||||
ReadRawNextAtom;
|
ReadRawNextAtom;
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
debugln([GetIndentStr(CurNode.GetLevel*2),'ReadExpression Atom ',GetAtom]);
|
debugln([GetNodeIndent(CurNode),'ReadExpression Atom ',GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
if AtomStart>SrcLen then
|
if AtomStart>SrcLen then
|
||||||
RaiseException('missing expression');
|
RaiseException('missing expression');
|
||||||
@ -949,14 +957,14 @@ begin
|
|||||||
RaiseExpectedButAtomFound('identifier');
|
RaiseExpectedButAtomFound('identifier');
|
||||||
end else if AtomIs('if') then begin
|
end else if AtomIs('if') then begin
|
||||||
{$IFDEF VerboseCDirectives}
|
{$IFDEF VerboseCDirectives}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
CurNode.SubDesc:=ccnsDirectiveIf;
|
CurNode.SubDesc:=ccnsDirectiveIf;
|
||||||
IncIfLevel(AtomStart);
|
IncIfLevel(AtomStart);
|
||||||
ReadExpression;
|
ReadExpression;
|
||||||
end else if AtomIs('ifdef') then begin
|
end else if AtomIs('ifdef') then begin
|
||||||
{$IFDEF VerboseCDirectives}
|
{$IFDEF VerboseCDirectives}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
CurNode.SubDesc:=ccnsDirectiveIfDef;
|
CurNode.SubDesc:=ccnsDirectiveIfDef;
|
||||||
IncIfLevel(AtomStart);
|
IncIfLevel(AtomStart);
|
||||||
@ -965,7 +973,7 @@ begin
|
|||||||
RaiseExpectedButAtomFound('identifier');
|
RaiseExpectedButAtomFound('identifier');
|
||||||
end else if AtomIs('ifndef') then begin
|
end else if AtomIs('ifndef') then begin
|
||||||
{$IFDEF VerboseCDirectives}
|
{$IFDEF VerboseCDirectives}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
CurNode.SubDesc:=ccnsDirectiveIfNDef;
|
CurNode.SubDesc:=ccnsDirectiveIfNDef;
|
||||||
IncIfLevel(AtomStart);
|
IncIfLevel(AtomStart);
|
||||||
@ -974,7 +982,7 @@ begin
|
|||||||
RaiseExpectedButAtomFound('identifier');
|
RaiseExpectedButAtomFound('identifier');
|
||||||
end else if AtomIs('elif') then begin
|
end else if AtomIs('elif') then begin
|
||||||
{$IFDEF VerboseCDirectives}
|
{$IFDEF VerboseCDirectives}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2-2),GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2-2),GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
CurNode.SubDesc:=ccnsDirectiveElIf;
|
CurNode.SubDesc:=ccnsDirectiveElIf;
|
||||||
if IfLevel=0 then
|
if IfLevel=0 then
|
||||||
@ -982,7 +990,7 @@ begin
|
|||||||
ReadExpression;
|
ReadExpression;
|
||||||
end else if AtomIs('else') then begin
|
end else if AtomIs('else') then begin
|
||||||
{$IFDEF VerboseCDirectives}
|
{$IFDEF VerboseCDirectives}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2-2),GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2-2),GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
CurNode.SubDesc:=ccnsDirectiveElse;
|
CurNode.SubDesc:=ccnsDirectiveElse;
|
||||||
if IfLevel=0 then
|
if IfLevel=0 then
|
||||||
@ -993,7 +1001,7 @@ begin
|
|||||||
RaiseException('endif without if');
|
RaiseException('endif without if');
|
||||||
dec(IfLevel);
|
dec(IfLevel);
|
||||||
{$IFDEF VerboseCDirectives}
|
{$IFDEF VerboseCDirectives}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.DirectiveToken ',GetIndentStr(IfLevel*2),GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end else if AtomIs('line') then begin
|
end else if AtomIs('line') then begin
|
||||||
CurNode.SubDesc:=ccnsDirectiveLine;
|
CurNode.SubDesc:=ccnsDirectiveLine;
|
||||||
@ -1223,14 +1231,14 @@ begin
|
|||||||
CurNode:=NewNode;
|
CurNode:=NewNode;
|
||||||
CurNode.StartPos:=AtomStart;
|
CurNode.StartPos:=AtomStart;
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.CreateChildNode ',CCNodeDescAsString(Desc)]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.CreateChildNode ',CCNodeDescAsString(Desc)]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCCodeParserTool.EndChildNode;
|
procedure TCCodeParserTool.EndChildNode;
|
||||||
begin
|
begin
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.EndChildNode ',CCNodeDescAsString(CurNode.Desc)]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.EndChildNode ',CCNodeDescAsString(CurNode.Desc)]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
if CurNode.EndPos<=0 then
|
if CurNode.EndPos<=0 then
|
||||||
CurNode.EndPos:=SrcPos;
|
CurNode.EndPos:=SrcPos;
|
||||||
@ -1321,7 +1329,7 @@ var
|
|||||||
MainNode: TCodeTreeNode;
|
MainNode: TCodeTreeNode;
|
||||||
begin
|
begin
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.ReadVariable START ',GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.ReadVariable START ',GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
if AtomIs('typedef') then begin
|
if AtomIs('typedef') then begin
|
||||||
if AsParameter then
|
if AsParameter then
|
||||||
@ -1416,7 +1424,7 @@ begin
|
|||||||
ReadNextAtom;
|
ReadNextAtom;
|
||||||
end;
|
end;
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.ReadVariable name=',GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.ReadVariable name=',GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
if AtomIsIdentifier then begin
|
if AtomIsIdentifier then begin
|
||||||
CreateChildNode(ccnName);
|
CreateChildNode(ccnName);
|
||||||
@ -1429,7 +1437,7 @@ begin
|
|||||||
RaiseExpectedButAtomFound(')');
|
RaiseExpectedButAtomFound(')');
|
||||||
end else begin
|
end else begin
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.ReadVariable name=',GetAtom]);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.ReadVariable name=',GetAtom]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
if AtomIsIdentifier then begin
|
if AtomIsIdentifier then begin
|
||||||
CreateChildNode(ccnName);
|
CreateChildNode(ccnName);
|
||||||
@ -1761,7 +1769,7 @@ begin
|
|||||||
ReadRawNextCAtom(Src,SrcPos,AtomStart);
|
ReadRawNextCAtom(Src,SrcPos,AtomStart);
|
||||||
until (SrcPos>SrcLen) or (not (Src[AtomStart] in [#10,#13]));
|
until (SrcPos>SrcLen) or (not (Src[AtomStart] in [#10,#13]));
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.ReadNextAtom END ',AtomStart,'-',SrcPos,' "',copy(Src,AtomStart,SrcPos-AtomStart),'"']);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.ReadNextAtom END ',AtomStart,'-',SrcPos,' "',copy(Src,AtomStart,SrcPos-AtomStart),'"']);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1772,14 +1780,14 @@ begin
|
|||||||
LastAtomStart:=AtomStart;
|
LastAtomStart:=AtomStart;
|
||||||
repeat
|
repeat
|
||||||
ReadRawNextCAtom(Src,SrcPos,AtomStart);
|
ReadRawNextCAtom(Src,SrcPos,AtomStart);
|
||||||
if (SrcPos>SrcLen) then break;
|
if (AtomStart>SrcLen) then break;
|
||||||
if Src[AtomStart]='#' then begin
|
if Src[AtomStart]='#' then begin
|
||||||
ReadTilCLineEnd(Src,SrcPos);
|
ReadTilCLineEnd(Src,SrcPos);
|
||||||
if (SrcPos>SrcLen) then break;
|
if (SrcPos>SrcLen) then break;
|
||||||
end;
|
end;
|
||||||
until (not (Src[AtomStart] in [#10,#13]));
|
until (not (Src[AtomStart] in [#10,#13]));
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.ReadNextAtom END ',AtomStart,'-',SrcPos,' "',copy(Src,AtomStart,SrcPos-AtomStart),'"']);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.ReadNextAtom END ',AtomStart,'-',SrcPos,' "',copy(Src,AtomStart,SrcPos-AtomStart),'"']);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1801,7 +1809,7 @@ begin
|
|||||||
SrcPos:=AtomStart;
|
SrcPos:=AtomStart;
|
||||||
end;
|
end;
|
||||||
{$IFDEF VerboseCCodeParser}
|
{$IFDEF VerboseCCodeParser}
|
||||||
DebugLn([GetIndentStr(CurNode.GetLevel*2),'TCCodeParserTool.UndoReadNextAtom END ',AtomStart,'-',SrcPos,' "',copy(Src,AtomStart,SrcPos-AtomStart),'"']);
|
DebugLn([GetNodeIndent(CurNode),'TCCodeParserTool.UndoReadNextAtom END ',AtomStart,'-',SrcPos,' "',copy(Src,AtomStart,SrcPos-AtomStart),'"']);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2536,7 +2544,7 @@ begin
|
|||||||
if Tree<>nil then begin
|
if Tree<>nil then begin
|
||||||
Node:=Tree.Root;
|
Node:=Tree.Root;
|
||||||
while Node<>nil do begin
|
while Node<>nil do begin
|
||||||
DebugLn([GetIndentStr(Node.GetLevel*2)+NodeAsString(Node)]);
|
DebugLn([GetNodeIndent(CurNode)+NodeAsString(Node)]);
|
||||||
Node:=Node.Next;
|
Node:=Node.Next;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -190,6 +190,7 @@ type
|
|||||||
FSimplifyExpressions: boolean;
|
FSimplifyExpressions: boolean;
|
||||||
FSourceName: string;
|
FSourceName: string;
|
||||||
FUndefines: TStringToStringTree;
|
FUndefines: TStringToStringTree;
|
||||||
|
FUseExternal: boolean;
|
||||||
// converting C nodes to H2P nodes
|
// converting C nodes to H2P nodes
|
||||||
procedure ConvertStruct(CNode: TCodeTreeNode; ParentNode: TH2PNode);
|
procedure ConvertStruct(CNode: TCodeTreeNode; ParentNode: TH2PNode);
|
||||||
procedure ConvertVariable(CNode: TCodeTreeNode; ParentNode: TH2PNode);
|
procedure ConvertVariable(CNode: TCodeTreeNode; ParentNode: TH2PNode);
|
||||||
@ -289,6 +290,7 @@ type
|
|||||||
property PredefinedCTypes: TStringToStringTree read FPredefinedCTypes;
|
property PredefinedCTypes: TStringToStringTree read FPredefinedCTypes;
|
||||||
property IgnoreCParts: TIgnoreCSourceParts read FIgnoreCParts write FIgnoreCParts;
|
property IgnoreCParts: TIgnoreCSourceParts read FIgnoreCParts write FIgnoreCParts;
|
||||||
property SourceName: string read FSourceName write FSourceName;
|
property SourceName: string read FSourceName write FSourceName;
|
||||||
|
property UseExternal: boolean read FUseExternal write FUseExternal;// use external instad of public
|
||||||
|
|
||||||
// directives
|
// directives
|
||||||
property SimplifyExpressions: boolean read FSimplifyExpressions
|
property SimplifyExpressions: boolean read FSimplifyExpressions
|
||||||
@ -1279,7 +1281,11 @@ begin
|
|||||||
SetPasSection(ctnVarSection);
|
SetPasSection(ctnVarSection);
|
||||||
PascalCode:=H2PNode.PascalCode+';';
|
PascalCode:=H2PNode.PascalCode+';';
|
||||||
if H2PNode.CName<>'' then begin
|
if H2PNode.CName<>'' then begin
|
||||||
PascalCode:=PascalCode+' cvar; public';
|
PascalCode:=PascalCode+' cvar; ';
|
||||||
|
if UseExternal then
|
||||||
|
PascalCode:=PascalCode+'external'
|
||||||
|
else
|
||||||
|
PascalCode:=PascalCode+'public';
|
||||||
if H2PNode.PascalName<>H2PNode.CName then begin
|
if H2PNode.PascalName<>H2PNode.CName then begin
|
||||||
PascalCode:=PascalCode+' name '''+H2PNode.CName+'''';
|
PascalCode:=PascalCode+' name '''+H2PNode.CName+'''';
|
||||||
end;
|
end;
|
||||||
@ -2009,7 +2015,10 @@ var
|
|||||||
CNode: TCodeTreeNode;
|
CNode: TCodeTreeNode;
|
||||||
NextCNode: TCodeTreeNode;
|
NextCNode: TCodeTreeNode;
|
||||||
begin
|
begin
|
||||||
//DebugLn(['TH2PasTool.BuildH2PTree ParentNode=',ParentNode.DescAsString(CTool)]);
|
if ParentNode<>nil then
|
||||||
|
DebugLn(['TH2PasTool.BuildH2PTree ParentNode=',ParentNode.DescAsString(CTool)])
|
||||||
|
else
|
||||||
|
debugln(['TH2PasTool.BuildH2PTree START']);
|
||||||
if ParentNode<>nil then begin
|
if ParentNode<>nil then begin
|
||||||
if StartNode=nil then
|
if StartNode=nil then
|
||||||
StartNode:=ParentNode.CNode.FirstChild;
|
StartNode:=ParentNode.CNode.FirstChild;
|
||||||
@ -2024,7 +2033,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
CNode:=StartNode;
|
CNode:=StartNode;
|
||||||
while CNode<>nil do begin
|
while CNode<>nil do begin
|
||||||
//DebugLn(['TH2PasTool.BuildH2PTree Current ParentNode=',ParentNode.DescAsString(CTool),' CNode=',CCNodeDescAsString(CNode.Desc)]);
|
if ParentNode<>nil then
|
||||||
|
DebugLn(['TH2PasTool.BuildH2PTree Current ParentNode=',ParentNode.DescAsString(CTool),' CNode=',CCNodeDescAsString(CNode.Desc)])
|
||||||
|
else
|
||||||
|
DebugLn(['TH2PasTool.BuildH2PTree Current ParentNode=nil CNode=',CCNodeDescAsString(CNode.Desc)]);
|
||||||
NextCNode:=CNode.NextSkipChilds;
|
NextCNode:=CNode.NextSkipChilds;
|
||||||
case CNode.Desc of
|
case CNode.Desc of
|
||||||
ccnRoot, ccnExternBlock:
|
ccnRoot, ccnExternBlock:
|
||||||
@ -2693,6 +2705,7 @@ begin
|
|||||||
FIgnoreCParts:=[icspInclude];
|
FIgnoreCParts:=[icspInclude];
|
||||||
FDefines:=TStringToStringTree.Create(true);
|
FDefines:=TStringToStringTree.Create(true);
|
||||||
FUndefines:=TStringToStringTree.Create(true);
|
FUndefines:=TStringToStringTree.Create(true);
|
||||||
|
UseExternal:=true;
|
||||||
AddCommonCDefines;
|
AddCommonCDefines;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, fpcunit, testglobals, FileProcs, CodeToolManager,
|
Classes, SysUtils, fpcunit, testglobals, FileProcs, CodeToolManager,
|
||||||
CodeCache, CCodeParserTool, H2PasTool;
|
BasicCodeTools, CodeCache, CCodeParserTool, H2PasTool;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -119,19 +119,36 @@ var
|
|||||||
Tool: TH2PasTool;
|
Tool: TH2PasTool;
|
||||||
Header1: TCodeBuffer;
|
Header1: TCodeBuffer;
|
||||||
PasCode: TCodeBuffer;
|
PasCode: TCodeBuffer;
|
||||||
|
ExpectedSrc: String;
|
||||||
begin
|
begin
|
||||||
Tool:=TH2PasTool.Create;
|
Tool:=TH2PasTool.Create;
|
||||||
|
Header1:=nil;
|
||||||
|
PasCode:=nil;
|
||||||
try
|
try
|
||||||
Header1:=CodeToolBoss.CreateFile('header1.h');
|
Header1:=CodeToolBoss.CreateFile('header1.h');
|
||||||
PasCode:=CodeToolBoss.CreateFile('header1.pas');
|
PasCode:=CodeToolBoss.CreateFile('header1.pas');
|
||||||
Header1.Source:='int i;';
|
Header1.Source:='int i;';
|
||||||
Tool.Convert(Header1,PasCode);
|
Tool.Convert(Header1,PasCode);
|
||||||
Tool.WriteH2PNodeReport;
|
ExpectedSrc:=
|
||||||
|
'uses ctypes;'+LineEnding
|
||||||
|
+'var'+LineEnding
|
||||||
|
+' i: cint; cvar; external;'+LineEnding
|
||||||
|
+'implementation'+LineEnding
|
||||||
|
+'end.';
|
||||||
|
if CompareTextIgnoringSpace(ExpectedSrc,PasCode.Source,true)<>0 then begin
|
||||||
|
AssertEquals('convert int i;',ExpectedSrc,PasCode.Source);
|
||||||
|
end else begin
|
||||||
|
AssertEquals('convert int i;',true,true);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{Tool.WriteH2PNodeReport;
|
||||||
Tool.WriteH2PDirectivesNodeReport;
|
Tool.WriteH2PDirectivesNodeReport;
|
||||||
writeln;
|
writeln;
|
||||||
writeln('=============================================');
|
writeln('=============================================');
|
||||||
writeln(PasCode.Source);
|
writeln(PasCode.Source);}
|
||||||
finally
|
finally
|
||||||
|
if Header1<>nil then Header1.IsDeleted:=true;
|
||||||
|
if PasCode<>nil then PasCode.IsDeleted:=true;
|
||||||
Tool.Free;
|
Tool.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user