mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-19 04:29:26 +02:00
* addition for another procvar style decl (not working correct yet)
This commit is contained in:
parent
8959ab2eda
commit
a69a6856be
File diff suppressed because it is too large
Load Diff
@ -483,7 +483,7 @@ program h2pas;
|
|||||||
begin
|
begin
|
||||||
write(outfile,'_para',para);
|
write(outfile,'_para',para);
|
||||||
length:=length+6;
|
length:=length+6;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
write(outfile,':');
|
write(outfile,':');
|
||||||
if varpara then
|
if varpara then
|
||||||
@ -946,7 +946,6 @@ error_info : {
|
|||||||
begin
|
begin
|
||||||
writeln(outfile,'(* error ');
|
writeln(outfile,'(* error ');
|
||||||
writeln(outfile,yyline);
|
writeln(outfile,yyline);
|
||||||
writeln(outfile,'*)');
|
|
||||||
end;
|
end;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1191,6 +1190,57 @@ declaration :
|
|||||||
if assigned($4) then
|
if assigned($4) then
|
||||||
dispose($4,done);
|
dispose($4,done);
|
||||||
} |
|
} |
|
||||||
|
TYPEDEF type_specifier LKLAMMER dec_modifier declarator RKLAMMER LKLAMMER argument_declaration_list RKLAMMER
|
||||||
|
{
|
||||||
|
if block_type<>bt_type then
|
||||||
|
begin
|
||||||
|
writeln(outfile);
|
||||||
|
writeln(outfile,aktspace,'type');
|
||||||
|
block_type:=bt_type;
|
||||||
|
end;
|
||||||
|
no_pop:=assigned($4) and ($4^.str='no_pop');
|
||||||
|
shift(3);
|
||||||
|
(* walk through all declarations *)
|
||||||
|
hp:=$5;
|
||||||
|
ph:=nil;
|
||||||
|
if assigned(hp) then
|
||||||
|
begin
|
||||||
|
hp:=$8;
|
||||||
|
while assigned(hp^.p1) do
|
||||||
|
hp:=hp^.p1;
|
||||||
|
hp^.p1:=new(presobject,init_two(t_procdef,nil,$8));
|
||||||
|
hp:=$5;
|
||||||
|
if assigned(hp^.p1) and assigned(hp^.p1^.p2) then
|
||||||
|
begin
|
||||||
|
writeln(outfile);
|
||||||
|
(* write new type name *)
|
||||||
|
write(outfile,aktspace,hp^.p1^.p2^.p);
|
||||||
|
write(outfile,' = ');
|
||||||
|
shift(2);
|
||||||
|
if assigned(ph) then
|
||||||
|
write_p_a_def(outfile,hp^.p1^.p1,ph)
|
||||||
|
else
|
||||||
|
write_p_a_def(outfile,hp^.p1^.p1,$2);
|
||||||
|
(* simple def ? keep the name for the other defs *)
|
||||||
|
if (ph=nil) and (hp^.p1^.p1=nil) then
|
||||||
|
ph:=hp^.p1^.p2;
|
||||||
|
popshift;
|
||||||
|
(* if no_pop it is normal fpc calling convention *)
|
||||||
|
if is_procvar and
|
||||||
|
(not no_pop) then
|
||||||
|
write(outfile,';cdecl');
|
||||||
|
writeln(outfile,';');
|
||||||
|
flush(outfile);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
popshift;
|
||||||
|
if assigned($2)then
|
||||||
|
dispose($2,done);
|
||||||
|
if assigned($4)then
|
||||||
|
dispose($4,done);
|
||||||
|
if assigned($5)then (* disposes also $8 *)
|
||||||
|
dispose($5,done);
|
||||||
|
} |
|
||||||
TYPEDEF type_specifier dec_modifier declarator_list SEMICOLON
|
TYPEDEF type_specifier dec_modifier declarator_list SEMICOLON
|
||||||
{
|
{
|
||||||
if block_type<>bt_type then
|
if block_type<>bt_type then
|
||||||
@ -2125,7 +2175,10 @@ end.
|
|||||||
|
|
||||||
(*
|
(*
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.5 2000-03-28 06:56:31 michael
|
Revision 1.6 2000-04-01 14:16:32 peter
|
||||||
|
* addition for another procvar style decl (not working correct yet)
|
||||||
|
|
||||||
|
Revision 1.5 2000/03/28 06:56:31 michael
|
||||||
+ RemoveUNderscore now also does not add underscores to generated parameter names
|
+ RemoveUNderscore now also does not add underscores to generated parameter names
|
||||||
|
|
||||||
Revision 1.4 2000/03/27 21:39:20 peter
|
Revision 1.4 2000/03/27 21:39:20 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user