Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Calendar
  - Forums
  - IRC
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Donate
  - Sponsors
- Resources
  - Tour
  - 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.

# dmd.dclass

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

Source dclass.d

Documentation https://dlang.org/phobos/dmd_dclass.html

Coverage https://codecov.io/gh/dlang/dmd/src/master/src/dmd/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)
enum `ClassKind`: int;
  The ClassKind enum is used in ClassDeclaration AST nodes to specify the linkage type of the class or if it is an anonymous class. If the class is anonymous it is also considered to be a D class.
  `d`
    the class is a d(efault) class
  `cpp`
    the class is a C++ interface
  `objc`
    the class is an Objective-C class/interface
class `ClassDeclaration`: dmd.aggregate.AggregateDeclaration;
  bool `stack`;
    true if this is a scope class
  ClassKind `classKind`;
    specifies whether this is a D, C++, Objective-C or anonymous class/interface
  Baseok `baseok`;
    set the progress of base classes resolving
  ObjcClassDeclaration `objc`;
    Data for a class declaration that is needed for the Objective-C integration.
  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`: dmd.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-2018 by the D Language Foundation | Page generated by Ddoc on Thu Jun 7 15:29:10 2018