Michael Van Canneyt wrote:

Hi Michael,

>> I mean the whole code for CreateGUID() --one that does not
>> use OS's GUID stuff.
>
> See Subversion, SysUtils unit, more specific uuid.pp in the
> rtl/unix dir.

Thank you for the pointer.

Without creating incompatibility to the existing code (that of
Deplphi and Kylix included), might I suggest a little extension
to CreateGUID().

The reason I would like this is, there are timesone would
want to create GUIDs based on self supplied MAC numbers.

Here is a template of what I propose. If no one objects
to the idea, I can submit real code later.

---BEGIN PSEUDO CODE---

{These should be in Interface section of sysutils unit}
Type
  TMACNumber = Array [0..5] Of Byte;
  TUUIDCreationKind = (ucKernel, ucNIC, ucPseudoMAC);

{I could not find where PreferKernelUUID was defined,
but, with these changes we will not need it anymore}

Const
  NullMAC: TMacArray = [0,0,0,0,0,0];
  TUUIDCreationKind = (ucKernel, ucNIC, ucPseudoMAC);

{This should be in the Implemantation section}

Function CreateGUID(
  out GUID : TGUID;
  const UUIDCreationKind: TUUIDCreationKind = ucKernel;
  const MACNumber: TMACNumber = NullMAC
  ) : Integer;
begin
  case UUIDCreationKind of
    ucKernel: begin
      if not CreateKernelGUID(Guid) then
        if not CreateMACGuid(Guid) then
          GetRandomBytes(GUID,SizeOf(Guid));
      end;
    end;
    ucNIC: begin
      if not CreateMACGuid(Guid) then
        if not CreateKernelGUID(Guid) then
          GetRandomBytes(GUID,SizeOf(Guid));
    end;
    ucPseudoMAC: begin
     {Here comes code that uses MACNumber}
    end;
  end;
  Result:=0;
end;
---END PSEUDO CODE---

Cheers,
Adem

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to