Node:TypeOf, Next:Unbind, Previous:type of, Up:Reference

### TypeOf

#### Synopsis

    function TypeOf (var x): PObjectType;

#### Description

Returns a pointer to the VMT of an object type or variable. This pointer can be used to identify the type of an object.

`TypeOf` can be applied to expressions of object type and to object type names. In the former case, the actual type of polymorphic objects is returned.

#### Conforming to

`TypeOf` is a Borland Pascal extension.

#### Example

    program TypeOfDemo;
    type
      FooPtr = ^Foo;
      BarPtr = ^Bar;

      Foo = object         { Has a VMT, though it doesn't }
        x: Integer;        { contain virtual methods.     }
        constructor Init;
      end;

      Bar = object (Foo)
        y: Integer;
      end;

    constructor Foo.Init;
    begin
    end;

    var
      MyFoo: FooPtr;

    begin
      MyFoo := New (BarPtr, Init);
      if TypeOf (MyFoo^) = TypeOf (Bar) then  { True }
        WriteLn ('OK')
    end.

#### See also

BitSizeOf, AlignOf, PObjectType, SetType, SizeOf, OOP.