mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 21:20:37 +00:00
[docs][LLVM-style RTTI] Add a mention of multiple inheritance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228479 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f28bf6c7aa
commit
cd04094266
@ -377,6 +377,20 @@ contract for ``classof`` is "return ``true`` if the dynamic type of the
|
||||
argument is-a ``C``". As long as your implementation fulfills this
|
||||
contract, you can tweak and optimize it as much as you want.
|
||||
|
||||
For example, LLVM-style RTTI can work fine in the presence of
|
||||
multiple-inheritance by defining an appropriate ``classof``.
|
||||
An example of this in practice is
|
||||
`Decl <http://clang.llvm.org/doxygen/classclang_1_1Decl.html>`_ vs.
|
||||
`DeclContext <http://clang.llvm.org/doxygen/classclang_1_1DeclContext.html>`_
|
||||
inside Clang.
|
||||
The ``Decl`` hierarchy is done very similarly to the example setup
|
||||
demonstrated in this tutorial.
|
||||
The key part is how to then incorporate ``DeclContext``: all that is needed
|
||||
is in ``bool DeclContext::classof(const Decl *)``, which asks the question
|
||||
"Given a ``Decl``, how can I determine if it is-a ``DeclContext``?".
|
||||
It answers this with a simple switch over the set of ``Decl`` "kinds", and
|
||||
returning true for ones that are known to be ``DeclContext``'s.
|
||||
|
||||
.. TODO::
|
||||
|
||||
Touch on some of the more advanced features, like ``isa_impl`` and
|
||||
|
Loading…
Reference in New Issue
Block a user