ddmd.dclass - D Programming Language
Description: D Programming Language
Keywords: D programming language

Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Foundation
  - Donate
- Resources
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

# ddmd.dclass

Compiler implementation of the D programming language.
Authors:
Walter Bright
License:
Boost License 1.0

Source: dclass.d

struct `BaseClass`;
  bool `fillVtbl`(ClassDeclaration `cd`, FuncDeclarations* `vtbl`, int `newinstance`);
    Fill in `vtbl`[] for base class based on member functions of class `cd`.

    Input: `vtbl` if !=NULL, fill it in `newinstance` !=0 means all entries must be filled in by members of `cd`, not members of any base classes of `cd`.

    Returns:
    `true` if any entries were filled in by members of `cd` (not exclusively by base classes)
class `ClassDeclaration`: ddmd.aggregate.AggregateDeclaration;
  final bool `isBaseOf2`(ClassDeclaration `cd`);
    Determine if 'this' is a base class of `cd`. This is used to detect circular inheritance only.
  bool `isBaseOf`(ClassDeclaration `cd`, int* `poffset`);
    Determine if 'this' is a base class of `cd`.
  final const bool `isBaseInfoComplete`();
    Determine if 'this' has complete base class information. This is used to detect forward references in covariant overloads.
  final ClassDeclaration `searchBase`(Identifier `ident`);
    Search base classes in depth-first, left-to-right order for a class or interface named '`ident`'. Stops at first found. Does not look for additional matches.
    Parameters:

    Identifier `ident` | identifier to search for

    Returns:
    ClassDeclaration if found, `null` if not
  final FuncDeclaration `findFunc`(Identifier `ident`, TypeFunction `tf`);
    Find virtual function matching identifier and type. Used to build virtual function tables for interface implementations.
    Parameters:

    Identifier `ident` | function's identifier
    TypeFunction `tf` | function's type

    Returns:
    function symbol if found, `null` if not

    Errors: prints error message if more than one match

  final const bool `isCOMclass`();
  final bool `isAbstract`();
  const int `vtblOffset`();
    Determine if slot 0 of the vtbl[] is reserved for something else. For class objects, yes, this is where the classinfo ptr goes. For COM interfaces, no. For non-COM interfaces, yes, this is where the Interface ptr goes.
    Returns:
    0 vtbl[0] is first virtual function pointer 1 vtbl[0] is classinfo/interfaceinfo pointer
  const const(char)* `kind`();
  final void `addLocalClass`(ClassDeclarations* `aclasses`);
class `InterfaceDeclaration`: ddmd.dclass.ClassDeclaration;
  bool `isBaseOf`(ClassDeclaration `cd`, int* `poffset`);
    Determine if 'this' is a base class of `cd`. (Actually, if it is an interface supported by `cd`)

    Output: *`poffset` offset to start of class OFFSET_RUNTIME must determine offset at runtime

    Returns:
    `false` not a base `true` is a base
  const const(char)* `kind`();
  const int `vtblOffset`();
    Determine if slot 0 of the vtbl[] is reserved for something else. For class objects, yes, this is where the ClassInfo ptr goes. For COM interfaces, no. For non-COM interfaces, yes, this is where the Interface ptr goes.

Copyright © 1999-2017 by the D Language Foundation | Page generated by Ddoc on Wed Nov 29 21:28:58 2017