llvm::RTTIExtends

Inheritance utility for extensible RTTI.

Synopsis

Declared in <llvm/Support/ExtensibleRTTI.h>

template<
    typename ThisT,
    typename ParentT,
    typename... ParentTs>
class RTTIExtends
    : public ParentT
    , public ParentTs...

Description

Multiple inheritance is supported, but RTTIExtends only inherits constructors from the first base class. All subsequent bases will be default constructed. Virtual and non-public inheritance are not supported.

RTTIExtents uses CRTP so the first template argument to RTTIExtends is the newly introduced type, and the second and later arguments are the parent classes.


class MyType : public RTTIExtends<MyType, RTTIRoot> {
public:
  static char ID;
};

class MyDerivedType : public RTTIExtends<MyDerivedType, MyType> {
public:
  static char ID;
};

class MyOtherType : public RTTIExtends<MyOtherType, MyType> {
public:
  static char ID;
};

class MyMultipleInheritanceType
  : public RTTIExtends<MyMultipleInheritanceType,
                       MyDerivedType, MyOtherType> {
public:
  static char ID;
};


Base Classes

NameDescription
ParentT
ParentTs...

Member Functions

NameDescription
dynamicClassID Return the dynamic class ID for this instance.
isA Check whether this instance is a subclass of QueryT.
isA Return true if this object is an instance of ClassID or a parent.

Static Member Functions

NameDescription
classID Return the static class ID for ThisT.
classof Return true if R is an instance of ThisT (for Casting.h).

Using Declarations

NameDescription
Unnamed using Inherit constructors from the first parent type.

Derived Classes

NameDescription
FileSystem The virtual file system interface.
GenericNamedTask Base class for generic tasks.
IdleTask IdleTask can be used as the basis for low-priority tasks, e.g. speculative lookup.
InMemoryFileSystem An in-memory file system.
LookupTask Lookups are usually run on the current thread, but in some cases they may be run as tasks, e.g. if the lookup has been continued from a suspended state.
MaterializationTask A materialization task.
NamedValuesSchema A schema for representing an array of named nodes in a CAS.
NodeSchema A base class for schemas built on top of CAS nodes.
NullOutputFileImpl An OutputFileImpl that discards all written data.
ObjectLayer Interface for Layers that accept object files.
ObjectLinkingLayer An ObjectLayer implementation built on JITLink.
ObjectTransformLayer A layer that applies a transform to emitted object files.
OutputFileImpl Abstract backend implementation for a virtualized output file.
OverlayFileSystem A file system that allows overlaying one AbstractFileSystem on top of another.
ProxyFileSystem File system adapter that proxies calls to an underlying file system.
RTDyldObjectLinkingLayer An ObjectLayer implementation built on RuntimeDyld.
RedirectingFileSystem A virtual file system parsed from a YAML file.
Task Represents an abstract task for ORC to run.
TracingFileSystemImpl File system that counts calls to the underlying file system.