[llvm] r228479 - [docs][LLVM-style RTTI] Add a mention of multiple inheritance.

Sean Silva chisophugis at gmail.com
Fri Feb 6 17:16:26 PST 2015

Author: silvas
Date: Fri Feb  6 19:16:26 2015
New Revision: 228479

URL: http://llvm.org/viewvc/llvm-project?rev=228479&view=rev
[docs][LLVM-style RTTI] Add a mention of multiple inheritance.


Modified: llvm/trunk/docs/HowToSetUpLLVMStyleRTTI.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/HowToSetUpLLVMStyleRTTI.rst?rev=228479&r1=228478&r2=228479&view=diff
--- llvm/trunk/docs/HowToSetUpLLVMStyleRTTI.rst (original)
+++ llvm/trunk/docs/HowToSetUpLLVMStyleRTTI.rst Fri Feb  6 19:16:26 2015
@@ -377,6 +377,20 @@ contract for ``classof`` is "return ``tr
 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

More information about the llvm-commits mailing list