The result is actually enum, because it's one of: 0, -1, -2, -3, -4.
if FFreeCount<>RealCount then begin
Result:=-1; exit;
end;
// test items
RealCount:=0;
AnItem:=FFirst;
while AnItem<>nil do begin
if (AnItem.Next<>nil) and (AnItem.Next.Prior<>AnItem) then begin
Result:=-2; exit;
end;
if (AnItem.Prior<>nil) and (AnItem.Prior.Next<>AnItem) then begin
Result:=-3; exit;
end;
inc(RealCount);
AnItem:=AnItem.Next;
end;
if FCount<>RealCount then begin
Result:=-4; exit;
end;
Result:=0;
end;
Let's make it normal enum?