fork(3) download
  1. count = 8
  2.  
  3. def VarList(count, prefix):
  4. s = ""
  5. for i in range(count):
  6. if i<>0:
  7. s = s + ", "
  8. s = s + prefix + str(i+1)
  9. return s
  10.  
  11. def InitialiseNilIntf(count):
  12. print "procedure InitialiseNil(var " + VarList(count, "Obj") + "); overload;"
  13.  
  14. def FreeAndNilIntf(count):
  15. print "procedure FreeAndNil(var " + VarList(count, "Obj") + "); overload;"
  16.  
  17. def InitialiseNilImpl(count):
  18. print "procedure InitialiseNil(var " + VarList(count, "Obj") + ");"
  19. print "begin"
  20. for i in range(count):
  21. print " Pointer(Obj%s) := nil;" % str(i+1)
  22. print "end;"
  23. print
  24.  
  25. def FreeAndNilImpl(count):
  26. print "procedure FreeAndNil(var " + VarList(count, "Obj") + ");"
  27. print "var"
  28. print " " + VarList(count, "Temp") + ": TObject;"
  29. print "begin"
  30. for i in range(count):
  31. print " Temp%s := TObject(Obj%s);" % (str(i+1), str(i+1))
  32. for i in range(count):
  33. print " Pointer(Obj%s) := nil;" % str(i+1)
  34. for i in range(count):
  35. print " Temp%s.Free;" % str(i+1)
  36. print "end;"
  37. print
  38.  
  39. for i in range(count):
  40. InitialiseNilIntf(i+1)
  41. print
  42. for i in range(count):
  43. FreeAndNilIntf(i+1)
  44. print
  45. for i in range(count):
  46. InitialiseNilImpl(i+1)
  47. print
  48. for i in range(count):
  49. FreeAndNilImpl(i+1)
Success #stdin #stdout 0.01s 7728KB
stdin
Standard input is empty
stdout
procedure InitialiseNil(var Obj1); overload;
procedure InitialiseNil(var Obj1, Obj2); overload;
procedure InitialiseNil(var Obj1, Obj2, Obj3); overload;
procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4); overload;
procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5); overload;
procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6); overload;
procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7); overload;
procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7, Obj8); overload;

procedure FreeAndNil(var Obj1); overload;
procedure FreeAndNil(var Obj1, Obj2); overload;
procedure FreeAndNil(var Obj1, Obj2, Obj3); overload;
procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4); overload;
procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5); overload;
procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6); overload;
procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7); overload;
procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7, Obj8); overload;

procedure InitialiseNil(var Obj1);
begin
  Pointer(Obj1) := nil;
end;

procedure InitialiseNil(var Obj1, Obj2);
begin
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
end;

procedure InitialiseNil(var Obj1, Obj2, Obj3);
begin
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
end;

procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4);
begin
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
end;

procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5);
begin
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
end;

procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6);
begin
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
  Pointer(Obj6) := nil;
end;

procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7);
begin
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
  Pointer(Obj6) := nil;
  Pointer(Obj7) := nil;
end;

procedure InitialiseNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7, Obj8);
begin
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
  Pointer(Obj6) := nil;
  Pointer(Obj7) := nil;
  Pointer(Obj8) := nil;
end;


procedure FreeAndNil(var Obj1);
var
  Temp1: TObject;
begin
  Temp1 := TObject(Obj1);
  Pointer(Obj1) := nil;
  Temp1.Free;
end;

procedure FreeAndNil(var Obj1, Obj2);
var
  Temp1, Temp2: TObject;
begin
  Temp1 := TObject(Obj1);
  Temp2 := TObject(Obj2);
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Temp1.Free;
  Temp2.Free;
end;

procedure FreeAndNil(var Obj1, Obj2, Obj3);
var
  Temp1, Temp2, Temp3: TObject;
begin
  Temp1 := TObject(Obj1);
  Temp2 := TObject(Obj2);
  Temp3 := TObject(Obj3);
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Temp1.Free;
  Temp2.Free;
  Temp3.Free;
end;

procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4);
var
  Temp1, Temp2, Temp3, Temp4: TObject;
begin
  Temp1 := TObject(Obj1);
  Temp2 := TObject(Obj2);
  Temp3 := TObject(Obj3);
  Temp4 := TObject(Obj4);
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Temp1.Free;
  Temp2.Free;
  Temp3.Free;
  Temp4.Free;
end;

procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5);
var
  Temp1, Temp2, Temp3, Temp4, Temp5: TObject;
begin
  Temp1 := TObject(Obj1);
  Temp2 := TObject(Obj2);
  Temp3 := TObject(Obj3);
  Temp4 := TObject(Obj4);
  Temp5 := TObject(Obj5);
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
  Temp1.Free;
  Temp2.Free;
  Temp3.Free;
  Temp4.Free;
  Temp5.Free;
end;

procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6);
var
  Temp1, Temp2, Temp3, Temp4, Temp5, Temp6: TObject;
begin
  Temp1 := TObject(Obj1);
  Temp2 := TObject(Obj2);
  Temp3 := TObject(Obj3);
  Temp4 := TObject(Obj4);
  Temp5 := TObject(Obj5);
  Temp6 := TObject(Obj6);
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
  Pointer(Obj6) := nil;
  Temp1.Free;
  Temp2.Free;
  Temp3.Free;
  Temp4.Free;
  Temp5.Free;
  Temp6.Free;
end;

procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7);
var
  Temp1, Temp2, Temp3, Temp4, Temp5, Temp6, Temp7: TObject;
begin
  Temp1 := TObject(Obj1);
  Temp2 := TObject(Obj2);
  Temp3 := TObject(Obj3);
  Temp4 := TObject(Obj4);
  Temp5 := TObject(Obj5);
  Temp6 := TObject(Obj6);
  Temp7 := TObject(Obj7);
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
  Pointer(Obj6) := nil;
  Pointer(Obj7) := nil;
  Temp1.Free;
  Temp2.Free;
  Temp3.Free;
  Temp4.Free;
  Temp5.Free;
  Temp6.Free;
  Temp7.Free;
end;

procedure FreeAndNil(var Obj1, Obj2, Obj3, Obj4, Obj5, Obj6, Obj7, Obj8);
var
  Temp1, Temp2, Temp3, Temp4, Temp5, Temp6, Temp7, Temp8: TObject;
begin
  Temp1 := TObject(Obj1);
  Temp2 := TObject(Obj2);
  Temp3 := TObject(Obj3);
  Temp4 := TObject(Obj4);
  Temp5 := TObject(Obj5);
  Temp6 := TObject(Obj6);
  Temp7 := TObject(Obj7);
  Temp8 := TObject(Obj8);
  Pointer(Obj1) := nil;
  Pointer(Obj2) := nil;
  Pointer(Obj3) := nil;
  Pointer(Obj4) := nil;
  Pointer(Obj5) := nil;
  Pointer(Obj6) := nil;
  Pointer(Obj7) := nil;
  Pointer(Obj8) := nil;
  Temp1.Free;
  Temp2.Free;
  Temp3.Free;
  Temp4.Free;
  Temp5.Free;
  Temp6.Free;
  Temp7.Free;
  Temp8.Free;
end;