Sven Barth wrote:

OK, so is it possible to set up a constant extended record (i.e. the
work being done entirely at compilation time) that mimics an
instantiated object? Would

if LibCapShim is TObject then
..

be safe where LibCapShim could be either an object (possibly nil) or a
constant extended record?

You could try to overload the "is" operator for your to be defined static record [AFAIK it should work]. E.g.

=== code begin ===

TLibCapShim = record
  cap_get_proc: tcap_get_proc;
  // ...

  class operator is (aLeft: TLibCapShim; aRight: TClass): Boolean; inline;
end;

class operator TLibCapShim.Is(aLeft: TLibCapShim; aRight: TClass): Boolean;
begin
  Result := False;
end;

=== code end ===

Thanks Sven, looks interesting and I'll play with it presently. Can an extended record's fields/methods be set up at compilation time, or do they need to be done by code?

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to