Node: Planned - OOP, Next: Planned - Misc, Previous: Planned - Other types, Up: Planned Features

#### Planned features: OOP

- `ProcVar := Obj.Method` {$X+}; method pointers (`procedure/function of object`) (-> Delphi) ???
- destructor: reset VMT link to 0 ???
- checks: `@Obj <> nil`, `TypeOf (Obj) <> nil`, `TypeOf (Obj)^.Size = -TypeOf (Obj)^.NegatedSize`; separate switches; function initialized (that does these 3 tests) ???
- ``class `is` class`` (implemented in Pascal with `Parent`)
- BP compatible dynamic method dispatcher ?? ???
- `class` (reference to an object type); allow classes and object types to inherit from each other; OOE; <01BD7A3A.6B187A20.prucha@helicon.co.at>; obpascal.zip
- `New`: Delphi syntax; Dispose?? (automatically?; set references automatically to nil) (-> FPC)
- `--base-class=foo`, `--base-object=bar` ???
- properties <01BD7A3A.6B187A20.prucha@helicon.co.at>, <16131.199805071354@potter.cc.keele.ac.uk>
- VMTs (also for local classes (EP modules???)!) in GPI files, written to assembler file by main program; `--cfiles=foo`: .s file with VMTs for C/assembler??? (also .h???)
- method overloading ??? ??
- interfaces (cf. OOE, Java); ``obj `is` interface`` (not so easy?) ???; variables of type pointer to more than one interface [and class] (also possible!); VMT problem with interfaces (my solution??? also with dynamic linking???)
- virtual constructors; in interfaces (load)???
- VMT: ClassID (64/128 bits?) default 0, error when duplicated, warning when 0 and inherited from class with <>0 ?, not allowed for abstract classes!; ClassName (also for abstract classes?); []; ProgrammerID, BaseClassID at beginning of unit (redeclarable?) ???
- VMT: Children: list of pVMT
- find class by ClassID/ClassName (implementable in Pascal with `Child`)
- object constants, class variables (-> other name for `VMT`); virtual/static
- store in GPI: whether ClassID used, ClassName used, which classes are instantiated