W3cubDocs

/D

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)
class ClassDeclaration: dmd.aggregate.AggregateDeclaration;
bool stack;

true if this is a scope class

int cppDtorVtblIndex;

if this is a C++ class, this is the slot reserved for the virtual destructor

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 bool hasMonitor();
Returns:
true if there's a __monitor field
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.

© 1999–2019 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/dmd_dclass.html