* Length(PChar) supported

This commit is contained in:
peter 2002-10-05 14:21:08 +00:00
parent ea8118b37c
commit 3f32669ded

View File

@ -1500,6 +1500,20 @@ implementation
else
CGMessage(type_e_mismatch);
end;
pointerdef :
begin
if is_pchar(left.resulttype.def) then
begin
hp := ccallparanode.create(left,nil);
result := ccallnode.createintern('fpc_pchar_length',hp);
{ make sure the left node doesn't get disposed, since it's }
{ reused in the new node (JM) }
left:=nil;
goto myexit;
end
else
CGMessage(type_e_mismatch);
end;
arraydef :
begin
if is_open_array(left.resulttype.def) or
@ -1522,17 +1536,12 @@ implementation
end
else
begin
{ can't use inserttypeconv because we need }
{ an explicit type conversion (JM) }
hp := ctypeconvnode.create(left,voidpointertype);
hp.toggleflag(nf_explizit);
hp := ccallparanode.create(hp,nil);
hp := ccallparanode.create(ctypeconvnode.create_explicit(left,voidpointertype),nil);
result := ccallnode.createintern('fpc_dynarray_length',hp);
{ make sure the left node doesn't get disposed, since it's }
{ reused in the new node (JM) }
left:=nil;
resulttypepass(result);
exit;
goto myexit;
end;
end;
else
@ -1596,7 +1605,7 @@ implementation
(tenumdef(resulttype.def).has_jumps) then
CGMessage(type_e_succ_and_pred_enums_with_assign_not_possible);
end;
{ only if the result is an enum do we do range checking }
if (resulttype.def.deftype=enumdef) then
checkrange := true
@ -2387,7 +2396,10 @@ begin
end.
{
$Log$
Revision 1.90 2002-09-13 19:12:09 carl
Revision 1.91 2002-10-05 14:21:08 peter
* Length(PChar) supported
Revision 1.90 2002/09/13 19:12:09 carl
* only enumerations have range checking for succ/pred in const section
Revision 1.89 2002/09/09 19:41:01 peter